diff --git a/gst/gstautoplug.c b/gst/gstautoplug.c index 5294737b40..edf21d1569 100644 --- a/gst/gstautoplug.c +++ b/gst/gstautoplug.c @@ -44,22 +44,23 @@ static void gst_autoplug_init (GstAutoplug *autoplug); static GstObjectClass *parent_class = NULL; static guint gst_autoplug_signals[LAST_SIGNAL] = { 0 }; -GtkType gst_autoplug_get_type(void) +GType gst_autoplug_get_type(void) { - static GtkType autoplug_type = 0; + static GType autoplug_type = 0; if (!autoplug_type) { - static const GtkTypeInfo autoplug_info = { - "GstAutoplug", - sizeof(GstAutoplug), + static const GTypeInfo autoplug_info = { sizeof(GstAutoplugClass), - (GtkClassInitFunc)gst_autoplug_class_init, - (GtkObjectInitFunc)gst_autoplug_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_autoplug_class_init, + NULL, + NULL, + sizeof(GstAutoplug), + 4, + (GInstanceInitFunc)gst_autoplug_init, }; - autoplug_type = gtk_type_unique (GST_TYPE_OBJECT, &autoplug_info); + autoplug_type = g_type_register_static (GST_TYPE_OBJECT, "GstAutoplug", &autoplug_info, 0); } return autoplug_type; } @@ -67,21 +68,19 @@ GtkType gst_autoplug_get_type(void) static void gst_autoplug_class_init(GstAutoplugClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; - gtkobject_class = (GtkObjectClass*) klass; + gobject_class = (GObjectClass*) klass; gstobject_class = (GstObjectClass*) klass; - parent_class = gtk_type_class(GST_TYPE_OBJECT); + parent_class = g_type_class_ref (GST_TYPE_OBJECT); gst_autoplug_signals[NEW_OBJECT] = - gtk_signal_new ("new_object", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstAutoplugClass, new_object), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("new_object", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstAutoplugClass, new_object), NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_OBJECT); - - gtk_object_class_add_signals (gtkobject_class, gst_autoplug_signals, LAST_SIGNAL); } static void gst_autoplug_init(GstAutoplug *autoplug) @@ -107,7 +106,7 @@ _gst_autoplug_initialize (void) void gst_autoplug_signal_new_object (GstAutoplug *autoplug, GstObject *object) { - gtk_signal_emit (GTK_OBJECT (autoplug), gst_autoplug_signals[NEW_OBJECT], object); + g_signal_emit (G_OBJECT (autoplug), gst_autoplug_signals[NEW_OBJECT], 0, object); } @@ -132,7 +131,7 @@ gst_autoplug_to_caps (GstAutoplug *autoplug, GstCaps *srccaps, GstCaps *sinkcaps va_start (args, sinkcaps); - oclass = GST_AUTOPLUG_CLASS (GTK_OBJECT (autoplug)->klass); + oclass = GST_AUTOPLUG_CLASS (G_OBJECT_GET_CLASS(autoplug)); if (oclass->autoplug_to_caps) element = (oclass->autoplug_to_caps) (autoplug, srccaps, sinkcaps, args); @@ -162,7 +161,7 @@ gst_autoplug_to_renderers (GstAutoplug *autoplug, GstCaps *srccaps, GstElement * va_start (args, target); - oclass = GST_AUTOPLUG_CLASS (GTK_OBJECT (autoplug)->klass); + oclass = GST_AUTOPLUG_CLASS (G_OBJECT_GET_CLASS(autoplug)); if (oclass->autoplug_to_renderers) element = (oclass->autoplug_to_renderers) (autoplug, srccaps, target, args); @@ -183,7 +182,7 @@ gst_autoplug_to_renderers (GstAutoplug *autoplug, GstCaps *srccaps, GstElement * * Returns: a new #GstAutoplugFactory. */ GstAutoplugFactory* -gst_autoplugfactory_new (const gchar *name, const gchar *longdesc, GtkType type) +gst_autoplugfactory_new (const gchar *name, const gchar *longdesc, GType type) { GstAutoplugFactory *factory; @@ -280,7 +279,7 @@ gst_autoplugfactory_create (GstAutoplugFactory *factory) g_return_val_if_fail (factory != NULL, NULL); g_return_val_if_fail (factory->type != 0, NULL); - new = GST_AUTOPLUG (gtk_type_new (factory->type)); + new = GST_AUTOPLUG (g_object_new(factory->type,NULL)); return new; } diff --git a/gst/gstautoplug.h b/gst/gstautoplug.h index 6bb03c64c4..54dcd34651 100644 --- a/gst/gstautoplug.h +++ b/gst/gstautoplug.h @@ -33,13 +33,13 @@ extern "C" { #define GST_TYPE_AUTOPLUG \ (gst_autoplug_get_type()) #define GST_AUTOPLUG(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_AUTOPLUG,GstAutoplug)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUTOPLUG,GstAutoplug)) #define GST_AUTOPLUG_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_AUTOPLUG,GstAutoplugClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUTOPLUG,GstAutoplugClass)) #define GST_IS_AUTOPLUG(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_AUTOPLUG)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUTOPLUG)) #define GST_IS_AUTOPLUG_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUTOPLUG)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUTOPLUG)) typedef struct _GstAutoplug GstAutoplug; typedef struct _GstAutoplugClass GstAutoplugClass; @@ -72,10 +72,10 @@ typedef struct _GstAutoplugFactory GstAutoplugFactory; struct _GstAutoplugFactory { gchar *name; /* name of autoplugger */ gchar *longdesc; /* long description of the autoplugger (well, don't overdo it..) */ - GtkType type; /* unique GtkType of the autoplugger */ + GType type; /* unique GType of the autoplugger */ }; -GtkType gst_autoplug_get_type (void); +GType gst_autoplug_get_type (void); void gst_autoplug_signal_new_object (GstAutoplug *autoplug, GstObject *object); @@ -88,7 +88,7 @@ GstElement* gst_autoplug_to_renderers (GstAutoplug *autoplug, GstCaps *srccaps * creating autopluggers * */ -GstAutoplugFactory* gst_autoplugfactory_new (const gchar *name, const gchar *longdesc, GtkType type); +GstAutoplugFactory* gst_autoplugfactory_new (const gchar *name, const gchar *longdesc, GType type); void gst_autoplugfactory_destroy (GstAutoplugFactory *factory); GstAutoplugFactory* gst_autoplugfactory_find (const gchar *name); diff --git a/gst/gstbin.c b/gst/gstbin.c index d2747a0975..cecc2c2dcd 100644 --- a/gst/gstbin.c +++ b/gst/gstbin.c @@ -38,13 +38,13 @@ GstElementDetails gst_bin_details = { }; -static void gst_bin_real_destroy (GtkObject *object); +static void gst_bin_real_destroy (GObject *object); static GstElementStateReturn gst_bin_change_state (GstElement *element); static GstElementStateReturn gst_bin_change_state_norecurse (GstBin *bin); static gboolean gst_bin_change_state_type (GstBin *bin, GstElementState state, - GtkType type); + GType type); static gboolean gst_bin_iterate_func (GstBin *bin); @@ -70,23 +70,24 @@ static void gst_bin_init (GstBin *bin); static GstElementClass *parent_class = NULL; static guint gst_bin_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_bin_get_type (void) { - static GtkType bin_type = 0; + static GType bin_type = 0; if (!bin_type) { - static const GtkTypeInfo bin_info = { - "GstBin", - sizeof(GstBin), + static const GTypeInfo bin_info = { sizeof(GstBinClass), - (GtkClassInitFunc)gst_bin_class_init, - (GtkObjectInitFunc)gst_bin_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_bin_class_init, + NULL, + NULL, + sizeof(GstBin), + 8, + (GInstanceInitFunc)gst_bin_init, }; - bin_type = gtk_type_unique (GST_TYPE_ELEMENT, &bin_info); + bin_type = g_type_register_static (GST_TYPE_ELEMENT, "GstBin", &bin_info, 0); } return bin_type; } @@ -94,22 +95,21 @@ gst_bin_get_type (void) static void gst_bin_class_init (GstBinClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; GstElementClass *gstelement_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstobject_class = (GstObjectClass*)klass; gstelement_class = (GstElementClass*)klass; - parent_class = gtk_type_class (GST_TYPE_ELEMENT); + parent_class = g_type_class_ref (GST_TYPE_ELEMENT); gst_bin_signals[OBJECT_ADDED] = - gtk_signal_new ("object_added", GTK_RUN_FIRST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstBinClass, object_added), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("object_added", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GstBinClass, object_added), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); - gtk_object_class_add_signals (gtkobject_class, gst_bin_signals, LAST_SIGNAL); klass->change_state_type = gst_bin_change_state_type; klass->iterate = gst_bin_iterate_func; @@ -119,7 +119,8 @@ gst_bin_class_init (GstBinClass *klass) gstelement_class->change_state = gst_bin_change_state; - gtkobject_class->destroy = gst_bin_real_destroy; +// FIXME +// gobject_class->destroy = gst_bin_real_destroy; } static void @@ -291,7 +292,7 @@ gst_bin_add (GstBin *bin, GST_INFO_ELEMENT (GST_CAT_PARENTAGE, bin, "added child \"%s\"", GST_ELEMENT_NAME (element)); - gtk_signal_emit (GTK_OBJECT (bin), gst_bin_signals[OBJECT_ADDED], element); + g_signal_emit (G_OBJECT (bin), gst_bin_signals[OBJECT_ADDED], 0, element); } /** @@ -373,7 +374,7 @@ gst_bin_change_state (GstElement *element) // GST_DEBUG (GST_CAT_STATES,"setting state on '%s'\n",GST_ELEMENT_NAME (child)); switch (gst_element_set_state (child, GST_STATE_PENDING (element))) { case GST_STATE_FAILURE: - GST_STATE_PENDING (element) = GST_STATE_NONE_PENDING; + GST_STATE_PENDING (element) = GST_STATE_VOID_PENDING; GST_DEBUG (GST_CAT_STATES,"child '%s' failed to go to state %d(%s)\n", GST_ELEMENT_NAME (child), GST_STATE_PENDING (element), gst_element_statename (GST_STATE_PENDING (element))); return GST_STATE_FAILURE; @@ -409,7 +410,7 @@ gst_bin_change_state_norecurse (GstBin *bin) static gboolean gst_bin_change_state_type(GstBin *bin, GstElementState state, - GtkType type) + GType type) { GList *children; GstElement *child; @@ -427,7 +428,7 @@ gst_bin_change_state_type(GstBin *bin, if (GST_IS_BIN (child)) { if (!gst_bin_set_state_type (GST_BIN (child), state,type)) return FALSE; - } else if (GTK_CHECK_TYPE (child,type)) { + } else if (G_TYPE_CHECK_INSTANCE_TYPE (child,type)) { if (!gst_element_set_state (child,state)) return FALSE; } @@ -453,7 +454,7 @@ gst_bin_change_state_type(GstBin *bin, gboolean gst_bin_set_state_type (GstBin *bin, GstElementState state, - GtkType type) + GType type) { GstBinClass *oclass; @@ -463,7 +464,7 @@ gst_bin_set_state_type (GstBin *bin, g_return_val_if_fail (bin != NULL, FALSE); g_return_val_if_fail (GST_IS_BIN (bin), FALSE); - oclass = GST_BIN_CLASS (GTK_OBJECT (bin)->klass); + oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS(bin)); if (oclass->change_state_type) (oclass->change_state_type) (bin,state,type); @@ -471,7 +472,7 @@ gst_bin_set_state_type (GstBin *bin, } static void -gst_bin_real_destroy (GtkObject *object) +gst_bin_real_destroy (GObject *object) { GstBin *bin = GST_BIN (object); GList *children, *orig; @@ -496,8 +497,9 @@ gst_bin_real_destroy (GtkObject *object) g_cond_free (bin->eoscond); - if (GTK_OBJECT_CLASS (parent_class)->destroy) - GTK_OBJECT_CLASS (parent_class)->destroy (object); +// FIXME!!! +// if (G_OBJECT_CLASS (parent_class)->destroy) +// G_OBJECT_CLASS (parent_class)->destroy (object); } /** @@ -660,7 +662,7 @@ gst_bin_iterate (GstBin *bin) GST_DEBUG_ENTER("(\"%s\")",GST_ELEMENT_NAME (bin)); - oclass = GST_BIN_CLASS (GTK_OBJECT (bin)->klass); + oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS(bin)); if (oclass->iterate) eos = (oclass->iterate) (bin); diff --git a/gst/gstbin.h b/gst/gstbin.h index e18ad0e070..cee2a69dba 100644 --- a/gst/gstbin.h +++ b/gst/gstbin.h @@ -36,13 +36,13 @@ extern GstElementDetails gst_bin_details; #define GST_TYPE_BIN \ (gst_bin_get_type()) #define GST_BIN(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_BIN,GstBin)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BIN,GstBin)) #define GST_BIN_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_BIN,GstBinClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BIN,GstBinClass)) #define GST_IS_BIN(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_BIN)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BIN)) #define GST_IS_BIN_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_BIN)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BIN)) typedef enum { /* this bin is a manager of child elements, i.e. a pipeline or thread */ @@ -94,7 +94,7 @@ struct _GstBinClass { /* change the state of elements of the given type */ gboolean (*change_state_type) (GstBin *bin, GstElementState state, - GtkType type); + GType type); /* run a full iteration of operation */ gboolean (*iterate) (GstBin *bin); }; @@ -110,7 +110,7 @@ struct __GstBinChain { }; -GtkType gst_bin_get_type (void); +GType gst_bin_get_type (void); GstElement* gst_bin_new (const gchar *name); #define gst_bin_destroy(bin) gst_object_destroy(GST_OBJECT(bin)) @@ -129,7 +129,7 @@ GList* gst_bin_get_list (GstBin *bin); gboolean gst_bin_set_state_type (GstBin *bin, GstElementState state, - GtkType type); + GType type); gboolean gst_bin_iterate (GstBin *bin); diff --git a/gst/gstelement.c b/gst/gstelement.c index 52775adba6..604097e01c 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -51,11 +51,11 @@ static void gst_element_class_init (GstElementClass *klass); static void gst_element_init (GstElement *element); static void gst_element_base_class_init (GstElementClass *klass); -static void gst_element_set_arg (GtkObject *object, GtkArg *arg, guint id); -static void gst_element_get_arg (GtkObject *object, GtkArg *arg, guint id); +static void gst_element_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_element_get_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void gst_element_shutdown (GtkObject *object); -static void gst_element_real_destroy (GtkObject *object); +static void gst_element_shutdown (GObject *object); +static void gst_element_real_destroy (GObject *object); static GstElementStateReturn gst_element_change_state (GstElement *element); @@ -65,21 +65,22 @@ static xmlNodePtr gst_element_save_thyself (GstObject *object, xmlNodePtr paren static GstObjectClass *parent_class = NULL; static guint gst_element_signals[LAST_SIGNAL] = { 0 }; -GtkType gst_element_get_type(void) { - static GtkType element_type = 0; +GType gst_element_get_type(void) { + static GType element_type = 0; if (!element_type) { - static const GtkTypeInfo element_info = { - "GstElement", - sizeof(GstElement), + static const GTypeInfo element_info = { sizeof(GstElementClass), - (GtkClassInitFunc)gst_element_class_init, - (GtkObjectInitFunc)gst_element_init, - (GtkArgSetFunc)gst_element_set_arg, - (GtkArgGetFunc)gst_element_get_arg, - (GtkClassInitFunc)gst_element_base_class_init, + (GBaseInitFunc)gst_element_base_class_init, + NULL, + (GClassInitFunc)gst_element_class_init, + NULL, + NULL, + sizeof(GstElement), + 0, + (GInstanceInitFunc)gst_element_init, }; - element_type = gtk_type_unique(GST_TYPE_OBJECT,&element_info); + element_type = g_type_register_static(GST_TYPE_OBJECT, "GstElement", &element_info, G_TYPE_FLAG_ABSTRACT); } return element_type; } @@ -87,56 +88,56 @@ GtkType gst_element_get_type(void) { static void gst_element_class_init (GstElementClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; - gtkobject_class = (GtkObjectClass*) klass; + gobject_class = (GObjectClass*) klass; gstobject_class = (GstObjectClass*) klass; - parent_class = gtk_type_class(GST_TYPE_OBJECT); + parent_class = g_type_class_ref(GST_TYPE_OBJECT); gst_element_signals[STATE_CHANGE] = - gtk_signal_new ("state_change", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, state_change), - gtk_marshal_NONE__INT, GTK_TYPE_NONE, 1, - GTK_TYPE_INT); + g_signal_newc ("state_change", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, state_change), NULL, NULL, + g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, + G_TYPE_INT); gst_element_signals[NEW_PAD] = - gtk_signal_new ("new_pad", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, new_pad), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("new_pad", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, new_pad), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_PAD); gst_element_signals[PAD_REMOVED] = - gtk_signal_new ("pad_removed", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, pad_removed), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("pad_removed", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, pad_removed), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_PAD); gst_element_signals[NEW_GHOST_PAD] = - gtk_signal_new ("new_ghost_pad", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, new_ghost_pad), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("new_ghost_pad", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, new_ghost_pad), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_PAD); gst_element_signals[GHOST_PAD_REMOVED] = - gtk_signal_new ("ghost_pad_removed", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, ghost_pad_removed), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("ghost_pad_removed", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, ghost_pad_removed), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_PAD); gst_element_signals[ERROR] = - gtk_signal_new ("error", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass, error), - gtk_marshal_NONE__STRING, GTK_TYPE_NONE,1, - GTK_TYPE_STRING); + g_signal_newc ("error", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass, error), NULL, NULL, + g_cclosure_marshal_VOID__STRING, G_TYPE_NONE,1, + G_TYPE_STRING); gst_element_signals[EOS] = - gtk_signal_new ("eos", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstElementClass,eos), - gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); + g_signal_newc ("eos", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstElementClass,eos), NULL, NULL, + g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - gtk_object_class_add_signals (gtkobject_class, gst_element_signals, LAST_SIGNAL); - gtkobject_class->set_arg = GST_DEBUG_FUNCPTR(gst_element_set_arg); - gtkobject_class->get_arg = GST_DEBUG_FUNCPTR(gst_element_get_arg); - gtkobject_class->shutdown = GST_DEBUG_FUNCPTR(gst_element_shutdown); - gtkobject_class->destroy = GST_DEBUG_FUNCPTR(gst_element_real_destroy); + gobject_class->set_property = GST_DEBUG_FUNCPTR(gst_element_set_property); + gobject_class->get_property = GST_DEBUG_FUNCPTR(gst_element_get_property); + gobject_class->shutdown = GST_DEBUG_FUNCPTR(gst_element_shutdown); +// FIXME! +// gobject_class->destroy = GST_DEBUG_FUNCPTR(gst_element_real_destroy); gstobject_class->save_thyself = GST_DEBUG_FUNCPTR(gst_element_save_thyself); gstobject_class->restore_thyself = GST_DEBUG_FUNCPTR(gst_element_restore_thyself); @@ -148,12 +149,12 @@ gst_element_class_init (GstElementClass *klass) static void gst_element_base_class_init (GstElementClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass*) klass; + gobject_class = (GObjectClass*) klass; - gtkobject_class->set_arg = GST_DEBUG_FUNCPTR(gst_element_set_arg); - gtkobject_class->get_arg = GST_DEBUG_FUNCPTR(gst_element_get_arg); + gobject_class->set_property = GST_DEBUG_FUNCPTR(gst_element_set_property); + gobject_class->get_property = GST_DEBUG_FUNCPTR(gst_element_get_property); } static void @@ -172,28 +173,28 @@ gst_element_init (GstElement *element) static void -gst_element_set_arg (GtkObject *object, GtkArg *arg, guint id) +gst_element_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - GstElementClass *oclass = GST_ELEMENT_CLASS (object->klass); + GstElementClass *oclass = (GstElementClass *)G_OBJECT_GET_CLASS(object); GST_SCHEDULE_LOCK_ELEMENT ( GST_ELEMENT_SCHED(object), GST_ELEMENT(object) ); - if (oclass->set_arg) - (oclass->set_arg)(object,arg,id); + if (oclass->set_property) + (oclass->set_property)(object,prop_id,value,pspec); GST_SCHEDULE_UNLOCK_ELEMENT ( GST_ELEMENT_SCHED(object), GST_ELEMENT(object) ); } static void -gst_element_get_arg (GtkObject *object, GtkArg *arg, guint id) +gst_element_get_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - GstElementClass *oclass = GST_ELEMENT_CLASS (object->klass); + GstElementClass *oclass = (GstElementClass *)G_OBJECT_GET_CLASS(object); GST_SCHEDULE_LOCK_ELEMENT (GST_ELEMENT_SCHED(object), GST_ELEMENT(object) ); - if (oclass->get_arg) - (oclass->get_arg)(object,arg,id); + if (oclass->get_property) + (oclass->get_property)(object,prop_id,value,pspec); GST_SCHEDULE_UNLOCK_ELEMENT (GST_ELEMENT_SCHED(object), GST_ELEMENT(object) ); } @@ -209,7 +210,7 @@ gst_element_get_arg (GtkObject *object, GtkArg *arg, guint id) GstElement* gst_element_new(void) { - return GST_ELEMENT (gtk_type_new (GST_TYPE_ELEMENT)); + return GST_ELEMENT (g_object_new(GST_TYPE_ELEMENT,NULL)); } /** @@ -261,7 +262,7 @@ gst_element_set_parent (GstElement *element, GstObject *parent) g_return_if_fail (GST_IS_ELEMENT (element)); g_return_if_fail (GST_OBJECT_PARENT (element) == NULL); g_return_if_fail (parent != NULL); - g_return_if_fail (GTK_IS_OBJECT (parent)); + g_return_if_fail (GST_IS_OBJECT (parent)); g_return_if_fail ((gpointer)element != (gpointer)parent); gst_object_set_parent (GST_OBJECT (element), parent); @@ -320,7 +321,7 @@ gst_element_add_pad (GstElement *element, GstPad *pad) element->numsinkpads++; /* emit the NEW_PAD signal */ - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[NEW_PAD], pad); + g_signal_emit (G_OBJECT (element), gst_element_signals[NEW_PAD], 0, pad); } /** @@ -348,7 +349,7 @@ gst_element_remove_pad (GstElement *element, GstPad *pad) else element->numsinkpads--; - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[PAD_REMOVED], pad); + g_signal_emit (G_OBJECT (element), gst_element_signals[PAD_REMOVED], 0, pad); gst_object_unparent (GST_OBJECT (pad)); } @@ -390,7 +391,7 @@ gst_element_add_ghost_pad (GstElement *element, GstPad *pad, gchar *name) GST_DEBUG(GST_CAT_ELEMENT_PADS,"added ghostpad %s:%s\n",GST_DEBUG_PAD_NAME(ghostpad)); /* emit the NEW_GHOST_PAD signal */ - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[NEW_GHOST_PAD], ghostpad); + g_signal_emit (G_OBJECT (element), gst_element_signals[NEW_GHOST_PAD], 0, ghostpad); } /** @@ -484,7 +485,7 @@ gst_element_get_padtemplate_list (GstElement *element) g_return_val_if_fail (element != NULL, NULL); g_return_val_if_fail (GST_IS_ELEMENT (element), NULL); - oclass = GST_ELEMENT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS(element)); if (oclass->elementfactory == NULL) return NULL; @@ -590,7 +591,7 @@ gst_element_request_pad (GstElement *element, GstPadTemplate *templ) GstPad *newpad = NULL; GstElementClass *oclass; - oclass = GST_ELEMENT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS(element)); if (oclass->request_new_pad) newpad = (oclass->request_new_pad)(element, templ); @@ -750,7 +751,7 @@ gst_element_error (GstElement *element, const gchar *error) /* FIXME: this is not finished!!! */ - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[ERROR], error); + g_signal_emit (G_OBJECT (element), gst_element_signals[ERROR], 0, error); } @@ -799,7 +800,7 @@ gst_element_set_state (GstElement *element, GstElementState state) gst_element_statename(curpending)); /* call the state change function so it can set the state */ - oclass = GST_ELEMENT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS(element)); if (oclass->change_state) return_val = (oclass->change_state)(element); @@ -831,7 +832,7 @@ gst_element_get_factory (GstElement *element) g_return_val_if_fail (element != NULL, NULL); g_return_val_if_fail (GST_IS_ELEMENT (element), NULL); - oclass = GST_ELEMENT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS(element)); return oclass->elementfactory; } @@ -871,20 +872,20 @@ GST_ELEMENT_NAME(element),GST_ELEMENT_NAME(GST_ELEMENT_PARENT(element)),GST_ELEM } GST_STATE (element) = GST_STATE_PENDING (element); - GST_STATE_PENDING (element) = GST_STATE_NONE_PENDING; + GST_STATE_PENDING (element) = GST_STATE_VOID_PENDING; // note: queues' state_change is a special case because it needs to lock // for synchronization (from another thread). since this signal may block // or (worse) make another state change, the queue needs to unlock before // calling. thus, gstqueue.c::gst_queue_state_change() blocks, unblocks, // unlocks, then emits this. - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[STATE_CHANGE], + g_signal_emit (G_OBJECT (element), gst_element_signals[STATE_CHANGE], 0, GST_STATE (element)); return GST_STATE_SUCCESS; } static void -gst_element_shutdown (GtkObject *object) +gst_element_shutdown (GObject *object) { GstElement *element = GST_ELEMENT (object); @@ -893,12 +894,12 @@ gst_element_shutdown (GtkObject *object) if (GST_IS_BIN (GST_OBJECT_PARENT (element))) gst_bin_remove (GST_BIN (GST_OBJECT_PARENT (element)), element); - if (GTK_OBJECT_CLASS (parent_class)->shutdown) - GTK_OBJECT_CLASS (parent_class)->shutdown (object); + if (G_OBJECT_CLASS (parent_class)->shutdown) + G_OBJECT_CLASS (parent_class)->shutdown (object); } static void -gst_element_real_destroy (GtkObject *object) +gst_element_real_destroy (GObject *object) { GstElement *element = GST_ELEMENT (object); GList *pads; @@ -925,8 +926,9 @@ gst_element_real_destroy (GtkObject *object) element->numsrcpads = 0; element->numsinkpads = 0; - if (GTK_OBJECT_CLASS (parent_class)->destroy) - GTK_OBJECT_CLASS (parent_class)->destroy (object); +// FIXME! +// if (G_OBJECT_CLASS (parent_class)->destroy) +// G_OBJECT_CLASS (parent_class)->destroy (object); } /* @@ -961,7 +963,7 @@ gst_element_save_thyself (GstObject *object, { GList *pads; GstElementClass *oclass; - GtkType type; +// GType type; GstElement *element; g_return_val_if_fail (object != NULL, parent); @@ -970,7 +972,7 @@ gst_element_save_thyself (GstObject *object, element = GST_ELEMENT (object); - oclass = GST_ELEMENT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS(element)); xmlNewChild(parent, NULL, "name", GST_ELEMENT_NAME(element)); @@ -984,9 +986,10 @@ gst_element_save_thyself (GstObject *object, // if (element->manager) // xmlNewChild(parent, NULL, "manager", GST_ELEMENT_NAME(element->manager)); +/* FIXME FIXME FIXME! // output all args to the element - type = GTK_OBJECT_TYPE (element); - while (type != GTK_TYPE_INVALID) { + type = G_OBJECT_TYPE (element); + while (type != G_TYPE_INVALID) { GtkArg *args; guint32 *flags; guint num_args,i; @@ -994,51 +997,51 @@ gst_element_save_thyself (GstObject *object, args = gtk_object_query_args (type, &flags, &num_args); for (i=0; i GTK_TYPE_NONE) && + if ((args[i].type > G_TYPE_NONE) && (flags[i] & GTK_ARG_READABLE)) { xmlNodePtr arg; - gtk_object_getv (GTK_OBJECT (element), 1, &args[i]); + gtk_object_getv (G_OBJECT (element), 1, &args[i]); arg = xmlNewChild (parent, NULL, "arg", NULL); xmlNewChild (arg, NULL, "name", args[i].name); switch (args[i].type) { - case GTK_TYPE_CHAR: + case G_TYPE_CHAR: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%c", GTK_VALUE_CHAR (args[i]))); + g_strdup_printf ("%c", G_VALUE_CHAR (args[i]))); break; - case GTK_TYPE_UCHAR: + case G_TYPE_UCHAR: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%d", GTK_VALUE_UCHAR (args[i]))); + g_strdup_printf ("%d", G_VALUE_UCHAR (args[i]))); break; - case GTK_TYPE_BOOL: + case G_TYPE_BOOL: xmlNewChild (arg, NULL, "value", - GTK_VALUE_BOOL (args[i]) ? "true" : "false"); + G_VALUE_BOOL (args[i]) ? "true" : "false"); break; - case GTK_TYPE_INT: + case G_TYPE_INT: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%d", GTK_VALUE_INT (args[i]))); + g_strdup_printf ("%d", G_VALUE_INT (args[i]))); break; - case GTK_TYPE_LONG: + case G_TYPE_LONG: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%ld", GTK_VALUE_LONG (args[i]))); + g_strdup_printf ("%ld", G_VALUE_LONG (args[i]))); break; - case GTK_TYPE_ULONG: + case G_TYPE_ULONG: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%lu", GTK_VALUE_ULONG (args[i]))); + g_strdup_printf ("%lu", G_VALUE_ULONG (args[i]))); break; - case GTK_TYPE_FLOAT: + case G_TYPE_FLOAT: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%f", GTK_VALUE_FLOAT (args[i]))); + g_strdup_printf ("%f", G_VALUE_FLOAT (args[i]))); break; - case GTK_TYPE_DOUBLE: + case G_TYPE_DOUBLE: xmlNewChild (arg, NULL, "value", - g_strdup_printf ("%g", GTK_VALUE_DOUBLE (args[i]))); + g_strdup_printf ("%g", G_VALUE_DOUBLE (args[i]))); break; - case GTK_TYPE_STRING: - xmlNewChild (arg, NULL, "value", GTK_VALUE_STRING (args[i])); + case G_TYPE_STRING: + xmlNewChild (arg, NULL, "value", G_VALUE_STRING (args[i])); break; default: if (args[i].type == GST_TYPE_FILENAME) { - xmlNewChild (arg, NULL, "value", GTK_VALUE_STRING (args[i])); + xmlNewChild (arg, NULL, "value", G_VALUE_STRING (args[i])); } break; } @@ -1046,6 +1049,7 @@ gst_element_save_thyself (GstObject *object, } type = gtk_type_parent (type); } +*/ pads = GST_ELEMENT_PADS (element); @@ -1120,7 +1124,7 @@ gst_element_restore_thyself (xmlNodePtr self, GstObject *parent) } child = child->next; } - gst_util_set_object_arg (GTK_OBJECT (element), name, value); + gst_util_set_object_arg (G_OBJECT (element), name, value); } children = children->next; } @@ -1134,7 +1138,7 @@ gst_element_restore_thyself (xmlNodePtr self, GstObject *parent) children = children->next; } - oclass = GST_OBJECT_CLASS (GTK_OBJECT (element)->klass); + oclass = GST_OBJECT_CLASS (G_OBJECT_GET_CLASS(element)); if (oclass->restore_thyself) (oclass->restore_thyself) (GST_OBJECT (element), self); @@ -1212,7 +1216,7 @@ gst_element_signal_eos (GstElement *element) g_return_if_fail (element != NULL); g_return_if_fail (GST_IS_ELEMENT (element)); - gtk_signal_emit (GTK_OBJECT (element), gst_element_signals[EOS]); + g_signal_emit (G_OBJECT (element), gst_element_signals[EOS], 0); GST_FLAG_SET(element,GST_ELEMENT_COTHREAD_STOPPING); } @@ -1220,14 +1224,14 @@ gst_element_signal_eos (GstElement *element) const gchar *gst_element_statename(int state) { switch (state) { #ifdef GST_DEBUG_COLOR - case GST_STATE_NONE_PENDING: return "NONE_PENDING";break; + case GST_STATE_VOID_PENDING: return "NONE_PENDING";break; case GST_STATE_NULL: return "\033[01;37mNULL\033[00m";break; case GST_STATE_READY: return "\033[01;31mREADY\033[00m";break; case GST_STATE_PLAYING: return "\033[01;32mPLAYING\033[00m";break; case GST_STATE_PAUSED: return "\033[01;33mPAUSED\033[00m";break; default: return "\033[01;37;41mUNKNOWN!\033[00m"; #else - case GST_STATE_NONE_PENDING: return "NONE_PENDING";break; + case GST_STATE_VOID_PENDING: return "NONE_PENDING";break; case GST_STATE_NULL: return "NULL";break; case GST_STATE_READY: return "READY";break; case GST_STATE_PLAYING: return "PLAYING";break; diff --git a/gst/gstelement.h b/gst/gstelement.h index 25cc3dd001..2d84274ba3 100644 --- a/gst/gstelement.h +++ b/gst/gstelement.h @@ -43,7 +43,7 @@ extern "C" { typedef enum { - GST_STATE_NONE_PENDING = 0, + GST_STATE_VOID_PENDING = 0, GST_STATE_NULL = (1 << 0), GST_STATE_READY = (1 << 1), GST_STATE_PAUSED = (1 << 2), @@ -74,13 +74,13 @@ typedef enum { #define GST_TYPE_ELEMENT \ (gst_element_get_type()) #define GST_ELEMENT(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_ELEMENT,GstElement)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ELEMENT,GstElement)) #define GST_ELEMENT_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_ELEMENT,GstElementClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ELEMENT,GstElementClass)) #define GST_IS_ELEMENT(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_ELEMENT)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ELEMENT)) #define GST_IS_ELEMENT_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT)) typedef enum { /* element is complex (for some def.) and generally require a cothread */ @@ -164,8 +164,8 @@ struct _GstElementClass { void (*eos) (GstElement *element); /* local pointers for get/set */ - void (*set_arg) (GtkObject *object,GtkArg *arg,guint id); - void (*get_arg) (GtkObject *object,GtkArg *arg,guint id); + void (*set_property) (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); + void (*get_property) (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); /* change the element state */ GstElementStateReturn (*change_state) (GstElement *element); @@ -184,7 +184,7 @@ struct _GstElementDetails { struct _GstElementFactory { gchar *name; /* name of element */ - GtkType type; /* unique GtkType of element */ + GType type; /* unique GType of element */ GstElementDetails *details; /* pointer to details struct */ @@ -192,7 +192,7 @@ struct _GstElementFactory { guint16 numpadtemplates; }; -GtkType gst_element_get_type (void); +GType gst_element_get_type (void); GstElement* gst_element_new (void); #define gst_element_destroy(element) gst_object_destroy (GST_OBJECT (element)) @@ -244,7 +244,7 @@ GstElement* gst_element_restore_thyself (xmlNodePtr self, GstObject *parent); * factories stuff * **/ -GstElementFactory* gst_elementfactory_new (const gchar *name,GtkType type, +GstElementFactory* gst_elementfactory_new (const gchar *name,GType type, GstElementDetails *details); void gst_elementfactory_destroy (GstElementFactory *elementfactory); diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c index 9c4bc42e7b..dc5f5659c3 100644 --- a/gst/gstelementfactory.c +++ b/gst/gstelementfactory.c @@ -98,7 +98,7 @@ gst_elementfactory_get_list (void) /** * gst_elementfactory_new: * @name: name of new elementfactory - * @type: GtkType of new element + * @type: GType of new element * @details: #GstElementDetails structure with element details * * Create a new elementfactory capable of insantiating objects of the @@ -107,7 +107,7 @@ gst_elementfactory_get_list (void) * Returns: new elementfactory */ GstElementFactory* -gst_elementfactory_new (const gchar *name, GtkType type, +gst_elementfactory_new (const gchar *name, GType type, GstElementDetails *details) { GstElementFactory *factory; @@ -159,11 +159,11 @@ gst_elementfactory_create (GstElementFactory *factory, g_return_val_if_fail(factory->type != 0, NULL); // create an instance of the element - element = GST_ELEMENT(gtk_type_new(factory->type)); + element = GST_ELEMENT(g_object_new(factory->type,NULL)); g_assert(element != NULL); // attempt to set the elemenfactory class pointer if necessary - oclass = GST_ELEMENT_CLASS(GTK_OBJECT(element)->klass); + oclass = GST_ELEMENT_CLASS(G_OBJECT_GET_CLASS(element)); if (oclass->elementfactory == NULL) { GST_DEBUG (GST_CAT_ELEMENTFACTORY,"class %s\n", factory->name); oclass->elementfactory = factory; diff --git a/gst/gstextratypes.c b/gst/gstextratypes.c index 75e8a3a9bc..8519844975 100644 --- a/gst/gstextratypes.c +++ b/gst/gstextratypes.c @@ -2,7 +2,7 @@ * Copyright (C) 1999,2000 Erik Walthinsen * 2000 Wim Taymans * - * gstextratypes.c: Extra GtkTypes: filename type, etc. + * gstextratypes.c: Extra GTypes: filename type, etc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -24,23 +24,24 @@ #include "gstextratypes.h" -GtkType +GType gst_extra_get_filename_type (void) { - static GtkType filename_type = 0; + static GType filename_type = 0; if (!filename_type) { - static const GtkTypeInfo filename_info = { - "GstFilename", - 0, //sizeof(GstElement), + static const GTypeInfo filename_info = { 0, //sizeof(GstElementClass), - (GtkClassInitFunc)NULL, - (GtkObjectInitFunc)NULL, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + 0, //sizeof(GstElement), + 0, + NULL, }; - filename_type = gtk_type_unique (GTK_TYPE_STRING, &filename_info); + filename_type = g_type_register_static (G_TYPE_STRING, "GstFilename", &filename_info, 0); } return filename_type; } diff --git a/gst/gstextratypes.h b/gst/gstextratypes.h index e482be63bb..249fcd8cfe 100644 --- a/gst/gstextratypes.h +++ b/gst/gstextratypes.h @@ -2,7 +2,7 @@ * Copyright (C) 1999,2000 Erik Walthinsen * 2000 Wim Taymans * - * gstextratypes.h: Header for extra GtkTypes + * gstextratypes.h: Header for extra GTypes * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -24,7 +24,7 @@ #ifndef __GST_EXTRA_TYPES_H__ #define __GST_EXTRA_TYPES_H__ -#include +#include #ifdef __cplusplus @@ -33,7 +33,7 @@ extern "C" { #define GST_TYPE_FILENAME (gst_extra_get_filename_type()) -GtkType gst_extra_get_filename_type(void); +GType gst_extra_get_filename_type(void); #ifdef __cplusplus } diff --git a/gst/gstobject.c b/gst/gstobject.c index d693a5fea0..7a6d9ff39e 100644 --- a/gst/gstobject.c +++ b/gst/gstobject.c @@ -44,7 +44,7 @@ enum { typedef struct _GstSignalObject GstSignalObject; typedef struct _GstSignalObjectClass GstSignalObjectClass; -static GtkType gst_signal_object_get_type (void); +static GType gst_signal_object_get_type (void); static void gst_signal_object_class_init (GstSignalObjectClass *klass); static void gst_signal_object_init (GstSignalObject *object); @@ -53,35 +53,31 @@ static guint gst_signal_object_signals[SO_LAST_SIGNAL] = { 0 }; static void gst_object_class_init (GstObjectClass *klass); static void gst_object_init (GstObject *object); -static void gst_object_real_destroy (GtkObject *gtk_object); -static void gst_object_shutdown (GtkObject *gtk_object); -static void gst_object_finalize (GtkObject *gtk_object); +static void gst_object_real_destroy (GObject *gtk_object); +static void gst_object_shutdown (GObject *gtk_object); +static void gst_object_finalize (GObject *gtk_object); -static GtkObjectClass *parent_class = NULL; +static GObjectClass *parent_class = NULL; static guint gst_object_signals[LAST_SIGNAL] = { 0 }; -void -gst_object_inititialize (void) -{ -} - -GtkType +GType gst_object_get_type (void) { - static GtkType object_type = 0; + static GType object_type = 0; if (!object_type) { - static const GtkTypeInfo object_info = { - "GstObject", - sizeof(GstObject), - sizeof(GstObjectClass), - (GtkClassInitFunc)gst_object_class_init, - (GtkObjectInitFunc)gst_object_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + static const GTypeInfo object_info = { + sizeof (GstObjectClass), + NULL, + NULL, + (GClassInitFunc) gst_object_class_init, + NULL, + NULL, + sizeof (GstObject), + 32, + (GInstanceInitFunc) gst_object_init, }; - object_type = gtk_type_unique(gtk_object_get_type(),&object_info); + object_type = g_type_register_static (G_TYPE_OBJECT, "GstObject", &object_info, G_TYPE_FLAG_ABSTRACT); } return object_type; } @@ -89,45 +85,49 @@ gst_object_get_type (void) static void gst_object_class_init (GstObjectClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass*) klass; + gobject_class = (GObjectClass*) klass; - parent_class = gtk_type_class (gtk_object_get_type ()); + parent_class = g_type_class_ref (G_TYPE_OBJECT); +/* gst_object_signals[PARENT_SET] = - gtk_signal_new ("parent_set", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstObjectClass, parent_set), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("parent_set", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstObjectClass, parent_set), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_OBJECT); gst_object_signals[OBJECT_SAVED] = - gtk_signal_new ("object_saved", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstObjectClass, object_saved), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); - gtk_object_class_add_signals (gtkobject_class, gst_object_signals, LAST_SIGNAL); + g_signal_newc ("object_saved", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstObjectClass, object_saved), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, + G_TYPE_POINTER); +*/ + + gst_object_signals[PARENT_SET] = + g_signal_newc("parent_set", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstObjectClass, parent_set), NULL, NULL, + g_cclosure_marshal_VOID__OBJECT,G_TYPE_NONE,1, + G_TYPE_OBJECT); + gst_object_signals[OBJECT_SAVED] = + g_signal_newc("object_saved", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstObjectClass, object_saved), NULL, NULL, + g_cclosure_marshal_VOID__OBJECT,G_TYPE_NONE,1, + G_TYPE_OBJECT); klass->path_string_separator = "/"; - klass->signal_object = gtk_type_new (gst_signal_object_get_type ()); +// FIXME!!! +// klass->signal_object = g_object_new(gst_signal_object_get_type (,NULL)); - gtkobject_class->shutdown = gst_object_shutdown; - gtkobject_class->destroy = gst_object_real_destroy; - gtkobject_class->finalize = gst_object_finalize; + gobject_class->shutdown = gst_object_shutdown; +// gobject_class->destroy = gst_object_real_destroy; + gobject_class->finalize = gst_object_finalize; } static void gst_object_init (GstObject *object) { - GstObjectClass *oclass; - - oclass = GST_OBJECT_CLASS (GTK_OBJECT (object)->klass); - object->lock = g_mutex_new(); -#ifdef HAVE_ATOMIC_H - atomic_set(&(object->refcount),1); -#else - object->refcount = 1; -#endif object->parent = NULL; object->flags = 0; @@ -144,7 +144,7 @@ gst_object_init (GstObject *object) GstObject* gst_object_new (void) { - return GST_OBJECT (gtk_type_new (gst_object_get_type ())); + return GST_OBJECT (g_object_new (gst_object_get_type (), NULL)); } /** @@ -161,9 +161,9 @@ gst_object_ref (GstObject *object) g_return_val_if_fail (GST_IS_OBJECT (object), NULL); GST_DEBUG (GST_CAT_REFCOUNTING, "ref '%s' %d->%d\n",GST_OBJECT_NAME(object), - GTK_OBJECT(object)->ref_count,GTK_OBJECT(object)->ref_count+1); + G_OBJECT(object)->ref_count,G_OBJECT(object)->ref_count+1); - gtk_object_ref (GTK_OBJECT (object)); + g_object_ref (G_OBJECT (object)); return object; } @@ -182,9 +182,9 @@ gst_object_unref (GstObject *object) g_return_if_fail (GST_IS_OBJECT (object)); GST_DEBUG (GST_CAT_REFCOUNTING, "unref '%s' %d->%d\n",GST_OBJECT_NAME(object), - GTK_OBJECT(object)->ref_count,GTK_OBJECT(object)->ref_count-1); + G_OBJECT(object)->ref_count,G_OBJECT(object)->ref_count-1); - gtk_object_unref (GTK_OBJECT (object)); + g_object_unref (G_OBJECT (object)); } #define gst_object_unref gst_object_unref @@ -223,33 +223,34 @@ gst_object_destroy (GstObject *object) * invocations. */ gst_object_ref (object); - GTK_OBJECT (object)->klass->shutdown (GTK_OBJECT (object)); + G_OBJECT_GET_CLASS (object)->shutdown (G_OBJECT (object)); gst_object_unref (object); } } static void -gst_object_shutdown (GtkObject *object) +gst_object_shutdown (GObject *object) { GST_DEBUG (GST_CAT_REFCOUNTING, "shutdown '%s'\n",GST_OBJECT_NAME(object)); GST_FLAG_SET (GST_OBJECT (object), GST_DESTROYED); - parent_class->shutdown (GTK_OBJECT (object)); + parent_class->shutdown (G_OBJECT (object)); } /* finilize is called when the object has to free its resources */ static void -gst_object_real_destroy (GtkObject *gtk_object) +gst_object_real_destroy (GObject *g_object) { - GST_DEBUG (GST_CAT_REFCOUNTING, "destroy '%s'\n",GST_OBJECT_NAME(gtk_object)); + GST_DEBUG (GST_CAT_REFCOUNTING, "destroy '%s'\n",GST_OBJECT_NAME(g_object)); - GST_OBJECT_PARENT (gtk_object) = NULL; + GST_OBJECT_PARENT (g_object) = NULL; - parent_class->destroy (gtk_object); +// FIXME!! +// parent_class->destroy (g_object); } /* finilize is called when the object has to free its resources */ static void -gst_object_finalize (GtkObject *gtk_object) +gst_object_finalize (GObject *gtk_object) { GstObject *object; @@ -329,7 +330,7 @@ gst_object_set_parent (GstObject *object, GstObject *parent) gst_object_sink (object); object->parent = parent; - gtk_signal_emit (GTK_OBJECT (object), gst_object_signals[PARENT_SET], parent); + g_signal_emit (G_OBJECT (object), gst_object_signals[PARENT_SET], 0, parent); } /** @@ -382,15 +383,16 @@ gst_object_ref (GstObject *object) g_return_if_fail (object != NULL, NULL); g_return_if_fail (GST_IS_OBJECT (object), NULL); -#ifdef HAVE_ATOMIC_H - g_return_if_fail (atomic_read (&(object->refcount)) > 0); - atomic_inc (&(object->refcount)) -#else +//#ifdef HAVE_ATOMIC_H +// g_return_if_fail (atomic_read (&(object->refcount)) > 0); +// atomic_inc (&(object->refcount)) +//#else g_return_if_fail (object->refcount > 0); GST_LOCK (object); - object->refcount++; +// object->refcount++; + g_object_ref((GObject *)object); GST_UNLOCK (object); -#endif +//#endif return object; } @@ -432,7 +434,7 @@ gst_object_unref (GstObject *object) object->refcount = 1; #endif /* destroy it */ - gtk_object_destroy (GTK_OBJECT (object)); + gtk_object_destroy (G_OBJECT (object)); /* drop the refcount back to zero */ #ifdef HAVE_ATOMIC_H atomic_set (&(object->refcount),0); @@ -442,7 +444,7 @@ gst_object_unref (GstObject *object) /* finalize the object */ // FIXME this is an evil hack that should be killed // FIXMEFIXMEFIXMEFIXME -// gtk_object_finalize(GTK_OBJECT(object)); +// gtk_object_finalize(G_OBJECT(object)); } } #endif /* gst_object_unref */ @@ -492,12 +494,12 @@ gst_object_save_thyself (GstObject *object, xmlNodePtr parent) g_return_val_if_fail (GST_IS_OBJECT (object), parent); g_return_val_if_fail (parent != NULL, parent); - oclass = GST_OBJECT_CLASS (GTK_OBJECT (object)->klass); + oclass = (GstObjectClass *)G_OBJECT_GET_CLASS(object); if (oclass->save_thyself) oclass->save_thyself (object, parent); - gtk_signal_emit (GTK_OBJECT (object), gst_object_signals[OBJECT_SAVED], parent); + g_signal_emit (G_OBJECT (object), gst_object_signals[OBJECT_SAVED], 0, parent); return parent; } @@ -546,7 +548,7 @@ gst_object_get_path_string (GstObject *object) parents = parentage; while (parents) { if (GST_IS_OBJECT (parents->data)) { - GstObjectClass *oclass = GST_OBJECT_CLASS (GTK_OBJECT (parents->data)->klass); + GstObjectClass *oclass = (GstObjectClass *)G_OBJECT_GET_CLASS(parents->data); component = gst_object_get_name (parents->data); separator = oclass->path_string_separator; @@ -574,33 +576,34 @@ gst_object_get_path_string (GstObject *object) struct _GstSignalObject { - GtkObject object; + GObject object; }; struct _GstSignalObjectClass { - GtkObjectClass parent_class; + GObjectClass parent_class; /* signals */ void (*object_loaded) (GstSignalObject *object, GstObject *new, xmlNodePtr self); }; -static GtkType +static GType gst_signal_object_get_type (void) { - static GtkType signal_object_type = 0; + static GType signal_object_type = 0; if (!signal_object_type) { - static const GtkTypeInfo signal_object_info = { - "GstSignalObject", - sizeof(GstSignalObject), + static const GTypeInfo signal_object_info = { sizeof(GstSignalObjectClass), - (GtkClassInitFunc)gst_signal_object_class_init, - (GtkObjectInitFunc)gst_signal_object_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_signal_object_class_init, + NULL, + NULL, + sizeof(GstSignalObject), + 16, + (GInstanceInitFunc)gst_signal_object_init, }; - signal_object_type = gtk_type_unique(gtk_object_get_type(),&signal_object_info); + signal_object_type = g_type_register_static(G_TYPE_OBJECT, "GstSignalObject", &signal_object_info, 0); } return signal_object_type; } @@ -608,18 +611,18 @@ gst_signal_object_get_type (void) static void gst_signal_object_class_init (GstSignalObjectClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass*) klass; + gobject_class = (GObjectClass*) klass; - parent_class = gtk_type_class (gtk_object_get_type ()); + parent_class = g_type_class_ref (G_TYPE_OBJECT); gst_signal_object_signals[SO_OBJECT_LOADED] = - gtk_signal_new ("object_loaded", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstSignalObjectClass, object_loaded), - gtk_marshal_NONE__POINTER_POINTER, GTK_TYPE_NONE, 2, - GST_TYPE_OBJECT, GTK_TYPE_POINTER); - gtk_object_class_add_signals (gtkobject_class, gst_signal_object_signals, LAST_SIGNAL); + g_signal_newc("object_loaded", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstObjectClass, parent_set), NULL, NULL, + NULL, NULL, + gst_marshal_VOID__OBJECT_POINTER,G_TYPE_NONE,2, + G_TYPE_OBJECT,G_TYPE_POINTER); } static void @@ -641,10 +644,10 @@ gst_signal_object_init (GstSignalObject *object) guint gst_class_signal_connect (GstObjectClass *klass, const gchar *name, - GtkSignalFunc func, + gpointer func, gpointer func_data) { - return gtk_signal_connect (klass->signal_object, name, func, func_data); + return g_signal_connectc (klass->signal_object, name, func, func_data, FALSE); } /** @@ -662,7 +665,7 @@ gst_class_signal_emit_by_name (GstObject *object, { GstObjectClass *oclass; - oclass = GST_OBJECT_CLASS (GTK_OBJECT (object)->klass); + oclass = (GstObjectClass *)G_OBJECT_GET_CLASS(object); - gtk_signal_emit_by_name (oclass->signal_object, name, object, self); + g_signal_emit_by_name (oclass->signal_object, name, object, self); } diff --git a/gst/gstobject.h b/gst/gstobject.h index f7e095f614..3ab60d1254 100644 --- a/gst/gstobject.h +++ b/gst/gstobject.h @@ -24,10 +24,12 @@ #ifndef __GST_OBJECT_H__ #define __GST_OBJECT_H__ -#include +#include #include #include +#include + #include #ifdef HAVE_CONFIG_H @@ -49,13 +51,13 @@ extern "C" { #define GST_TYPE_OBJECT \ (gst_object_get_type()) #define GST_OBJECT(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_OBJECT,GstObject)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OBJECT,GstObject)) #define GST_OBJECT_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_OBJECT,GstObjectClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OBJECT,GstObjectClass)) #define GST_IS_OBJECT(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_OBJECT)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OBJECT)) #define GST_IS_OBJECT_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_OBJECT)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OBJECT)) //typedef struct _GstObject GstObject; //typedef struct _GstObjectClass GstObjectClass; @@ -69,7 +71,7 @@ typedef enum } GstObjectFlags; struct _GstObject { - GtkObject object; + GObject object; gchar *name; /* have to have a refcount for the object */ @@ -89,10 +91,10 @@ struct _GstObject { }; struct _GstObjectClass { - GtkObjectClass parent_class; + GObjectClass parent_class; gchar *path_string_separator; - GtkObject *signal_object; + GObject *signal_object; /* signals */ void (*parent_set) (GstObject *object, GstObject *parent); @@ -123,8 +125,8 @@ struct _GstObjectClass { #define GST_GET_LOCK(obj) (GST_OBJECT(obj)->lock) -/* normal GtkObject stuff */ -GtkType gst_object_get_type (void); +/* normal GObject stuff */ +GType gst_object_get_type (void); GstObject* gst_object_new (void); /* name routines */ @@ -153,7 +155,7 @@ gchar * gst_object_get_path_string (GstObject *object); guint gst_class_signal_connect (GstObjectClass *klass, const gchar *name, - GtkSignalFunc func, + gpointer func, gpointer func_data); void gst_class_signal_emit_by_name (GstObject *object, diff --git a/gst/gstpad.c b/gst/gstpad.c index eb7d921265..3d7baef2c6 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -38,22 +38,23 @@ static xmlNodePtr gst_pad_save_thyself (GstObject *object, xmlNodePtr parent); static GstObject *pad_parent_class = NULL; -GtkType +GType gst_pad_get_type(void) { - static GtkType pad_type = 0; + static GType pad_type = 0; if (!pad_type) { - static const GtkTypeInfo pad_info = { - "GstPad", - sizeof(GstPad), + static const GTypeInfo pad_info = { sizeof(GstPadClass), - (GtkClassInitFunc)gst_pad_class_init, - (GtkObjectInitFunc)gst_pad_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_pad_class_init, + NULL, + NULL, + sizeof(GstPad), + 32, + (GInstanceInitFunc)gst_pad_init, }; - pad_type = gtk_type_unique(GST_TYPE_OBJECT,&pad_info); + pad_type = g_type_register_static(GST_TYPE_OBJECT, "GstPad", &pad_info, 0); } return pad_type; } @@ -61,7 +62,7 @@ gst_pad_get_type(void) { static void gst_pad_class_init (GstPadClass *klass) { - pad_parent_class = gtk_type_class(GST_TYPE_OBJECT); + pad_parent_class = g_type_class_ref(GST_TYPE_OBJECT); } static void @@ -92,36 +93,37 @@ enum { /* FILL ME */ }; -static void gst_real_pad_class_init (GstRealPadClass *klass); -static void gst_real_pad_init (GstRealPad *pad); +static void gst_real_pad_class_init (GstRealPadClass *klass); +static void gst_real_pad_init (GstRealPad *pad); -static void gst_real_pad_set_arg (GtkObject *object,GtkArg *arg,guint id); -static void gst_real_pad_get_arg (GtkObject *object,GtkArg *arg,guint id); +static void gst_real_pad_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_real_pad_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gst_real_pad_destroy (GtkObject *object); +static void gst_real_pad_destroy (GObject *object); -static void gst_pad_push_func (GstPad *pad, GstBuffer *buf); +static void gst_pad_push_func (GstPad *pad, GstBuffer *buf); static GstPad *real_pad_parent_class = NULL; static guint gst_real_pad_signals[REAL_LAST_SIGNAL] = { 0 }; -GtkType +GType gst_real_pad_get_type(void) { - static GtkType pad_type = 0; + static GType pad_type = 0; if (!pad_type) { - static const GtkTypeInfo pad_info = { - "GstRealPad", - sizeof(GstRealPad), + static const GTypeInfo pad_info = { sizeof(GstRealPadClass), - (GtkClassInitFunc)gst_real_pad_class_init, - (GtkObjectInitFunc)gst_real_pad_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_real_pad_class_init, + NULL, + NULL, + sizeof(GstRealPad), + 32, + (GInstanceInitFunc)gst_real_pad_init, }; - pad_type = gtk_type_unique(GST_TYPE_PAD,&pad_info); + pad_type = g_type_register_static(GST_TYPE_PAD, "GstRealPad", &pad_info, 0); } return pad_type; } @@ -129,47 +131,50 @@ gst_real_pad_get_type(void) { static void gst_real_pad_class_init (GstRealPadClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstobject_class = (GstObjectClass*)klass; - real_pad_parent_class = gtk_type_class(GST_TYPE_PAD); + real_pad_parent_class = g_type_class_ref(GST_TYPE_PAD); gst_real_pad_signals[REAL_SET_ACTIVE] = - gtk_signal_new ("set_active", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstRealPadClass, set_active), - gtk_marshal_NONE__BOOL, GTK_TYPE_NONE, 1, - GTK_TYPE_BOOL); + g_signal_newc ("set_active", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstRealPadClass, set_active), NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, + G_TYPE_BOOLEAN); gst_real_pad_signals[REAL_CAPS_CHANGED] = - gtk_signal_new ("caps_changed", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstRealPadClass, caps_changed), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); + g_signal_newc ("caps_changed", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstRealPadClass, caps_changed), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, + G_TYPE_POINTER); gst_real_pad_signals[REAL_CAPS_NEGO_FAILED] = - gtk_signal_new ("caps_nego_failed", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstRealPadClass, caps_nego_failed), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); + g_signal_newc ("caps_nego_failed", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstRealPadClass, caps_nego_failed), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, + G_TYPE_POINTER); gst_real_pad_signals[REAL_CONNECTED] = - gtk_signal_new ("connected", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstRealPadClass, connected), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); + g_signal_newc ("connected", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstRealPadClass, connected), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, + G_TYPE_POINTER); gst_real_pad_signals[REAL_DISCONNECTED] = - gtk_signal_new ("disconnected", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstRealPadClass, disconnected), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); - gtk_object_class_add_signals (gtkobject_class, gst_real_pad_signals, REAL_LAST_SIGNAL); + g_signal_newc ("disconnected", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstRealPadClass, disconnected), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, + G_TYPE_POINTER); - gtk_object_add_arg_type ("GstRealPad::active", GTK_TYPE_BOOL, - GTK_ARG_READWRITE, REAL_ARG_ACTIVE); +// gtk_object_add_arg_type ("GstRealPad::active", G_TYPE_BOOLEAN, +// GTK_ARG_READWRITE, REAL_ARG_ACTIVE); + g_object_class_install_property (G_OBJECT_CLASS(klass), REAL_ARG_ACTIVE, + g_param_spec_boolean("active","Active","Whether the pad is active.", + TRUE,G_PARAM_READWRITE)); - gtkobject_class->destroy = GST_DEBUG_FUNCPTR(gst_real_pad_destroy); - gtkobject_class->set_arg = GST_DEBUG_FUNCPTR(gst_real_pad_set_arg); - gtkobject_class->get_arg = GST_DEBUG_FUNCPTR(gst_real_pad_get_arg); +// FIXME! +// gobject_class->destroy = GST_DEBUG_FUNCPTR(gst_real_pad_destroy); + gobject_class->set_property = GST_DEBUG_FUNCPTR(gst_real_pad_set_property); + gobject_class->get_property = GST_DEBUG_FUNCPTR(gst_real_pad_get_property); gstobject_class->save_thyself = GST_DEBUG_FUNCPTR(gst_pad_save_thyself); gstobject_class->path_string_separator = "."; @@ -197,20 +202,20 @@ gst_real_pad_init (GstRealPad *pad) } static void -gst_real_pad_set_arg (GtkObject *object, GtkArg *arg, guint id) +gst_real_pad_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { g_return_if_fail(GST_IS_PAD(object)); - switch (id) { + switch (prop_id) { case REAL_ARG_ACTIVE: - if (GTK_VALUE_BOOL(*arg)) { - gst_info("gstpad: activating pad\n"); + if (g_value_get_boolean(value)) { + GST_DEBUG(GST_CAT_PADS,"activating pad %s:%s\n",GST_DEBUG_PAD_NAME(object)); GST_FLAG_UNSET(object,GST_PAD_DISABLED); } else { - gst_info("gstpad: de-activating pad\n"); + GST_DEBUG(GST_CAT_PADS,"de-activating pad %s:%s\n",GST_DEBUG_PAD_NAME(object)); GST_FLAG_SET(object,GST_PAD_DISABLED); } - gtk_signal_emit(GTK_OBJECT(object), gst_real_pad_signals[REAL_SET_ACTIVE], + g_signal_emit(G_OBJECT(object), gst_real_pad_signals[REAL_SET_ACTIVE], 0, ! GST_FLAG_IS_SET(object,GST_PAD_DISABLED)); break; default: @@ -219,14 +224,14 @@ gst_real_pad_set_arg (GtkObject *object, GtkArg *arg, guint id) } static void -gst_real_pad_get_arg (GtkObject *object, GtkArg *arg, guint id) +gst_real_pad_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { /* it's not null if we got it, but it might not be ours */ g_return_if_fail (GST_IS_PAD (object)); - switch (id) { + switch (prop_id) { case REAL_ARG_ACTIVE: - GTK_VALUE_BOOL (*arg) = ! GST_FLAG_IS_SET (object, GST_PAD_DISABLED); + g_value_set_boolean(value, ! GST_FLAG_IS_SET (object, GST_PAD_DISABLED) ); break; default: break; @@ -252,7 +257,7 @@ gst_pad_new (gchar *name, g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (direction != GST_PAD_UNKNOWN, NULL); - pad = gtk_type_new (gst_real_pad_get_type ()); + pad = g_object_new (gst_real_pad_get_type (), NULL); gst_object_set_name (GST_OBJECT (pad), name); GST_RPAD_DIRECTION(pad) = direction; @@ -581,8 +586,8 @@ gst_pad_disconnect (GstPad *srcpad, GST_RPAD_PEER(realsink) = NULL; /* fire off a signal to each of the pads telling them that they've been disconnected */ - gtk_signal_emit(GTK_OBJECT(realsrc), gst_real_pad_signals[REAL_DISCONNECTED], realsink); - gtk_signal_emit(GTK_OBJECT(realsink), gst_real_pad_signals[REAL_DISCONNECTED], realsrc); + g_signal_emit(G_OBJECT(realsrc), gst_real_pad_signals[REAL_DISCONNECTED], 0, realsink); + g_signal_emit(G_OBJECT(realsink), gst_real_pad_signals[REAL_DISCONNECTED], 0, realsrc); // now tell the scheduler if (realsrc->sched) @@ -668,8 +673,8 @@ gst_pad_connect (GstPad *srcpad, } /* fire off a signal to each of the pads telling them that they've been connected */ - gtk_signal_emit(GTK_OBJECT(realsrc), gst_real_pad_signals[REAL_CONNECTED], realsink); - gtk_signal_emit(GTK_OBJECT(realsink), gst_real_pad_signals[REAL_CONNECTED], realsrc); + g_signal_emit(G_OBJECT(realsrc), gst_real_pad_signals[REAL_CONNECTED], 0, realsink); + g_signal_emit(G_OBJECT(realsink), gst_real_pad_signals[REAL_CONNECTED], 0, realsrc); // now tell the scheduler(s) if (realsrc->sched) @@ -697,7 +702,7 @@ gst_pad_set_parent (GstPad *pad, g_return_if_fail (GST_IS_PAD (pad)); g_return_if_fail (GST_PAD_PARENT (pad) == NULL); g_return_if_fail (parent != NULL); - g_return_if_fail (GTK_IS_OBJECT (parent)); + g_return_if_fail (GST_IS_OBJECT (parent)); g_return_if_fail ((gpointer)pad != (gpointer)parent); gst_object_set_parent (GST_OBJECT (pad), parent); @@ -1043,7 +1048,7 @@ gst_pad_get_bufferpool (GstPad *pad) } static void -gst_real_pad_destroy (GtkObject *object) +gst_real_pad_destroy (GObject *object) { GstPad *pad = GST_PAD (object); @@ -1076,8 +1081,9 @@ gst_real_pad_destroy (GtkObject *object) g_list_free (GST_REAL_PAD(pad)->ghostpads); } - if (GTK_OBJECT_CLASS (real_pad_parent_class)->destroy) - GTK_OBJECT_CLASS (real_pad_parent_class)->destroy (object); +// FIXME !! +// if (G_OBJECT_CLASS (real_pad_parent_class)->destroy) +// G_OBJECT_CLASS (real_pad_parent_class)->destroy (object); } @@ -1292,10 +1298,10 @@ gst_pad_renegotiate (GstPad *pad) if (!result) { GST_DEBUG (GST_CAT_NEGOTIATION, "firing caps_nego_failed signal on %s:%s and %s:%s to give it a chance to succeed\n", GST_DEBUG_PAD_NAME(currentpad),GST_DEBUG_PAD_NAME(otherpad)); - gtk_signal_emit (GTK_OBJECT(currentpad), - gst_real_pad_signals[REAL_CAPS_NEGO_FAILED],&result); - gtk_signal_emit (GTK_OBJECT(otherpad), - gst_real_pad_signals[REAL_CAPS_NEGO_FAILED],&result); + g_signal_emit (G_OBJECT(currentpad), + gst_real_pad_signals[REAL_CAPS_NEGO_FAILED], 0, &result); + g_signal_emit (G_OBJECT(otherpad), + gst_real_pad_signals[REAL_CAPS_NEGO_FAILED], 0, &result); if (result) GST_DEBUG (GST_CAT_NEGOTIATION, "caps_nego_failed handler claims success at renego, believing\n"); } @@ -1317,10 +1323,10 @@ gst_pad_renegotiate (GstPad *pad) GST_DEBUG (GST_CAT_NEGOTIATION, "firing caps_changed signal on %s:%s and %s:%s\n", GST_DEBUG_PAD_NAME(currentpad),GST_DEBUG_PAD_NAME(otherpad)); - gtk_signal_emit (GTK_OBJECT(currentpad), - gst_real_pad_signals[REAL_CAPS_CHANGED],GST_PAD_CAPS(currentpad)); - gtk_signal_emit (GTK_OBJECT(otherpad), - gst_real_pad_signals[REAL_CAPS_CHANGED],GST_PAD_CAPS(otherpad)); + g_signal_emit (G_OBJECT(currentpad), + gst_real_pad_signals[REAL_CAPS_CHANGED], 0, GST_PAD_CAPS(currentpad)); + g_signal_emit (G_OBJECT(otherpad), + gst_real_pad_signals[REAL_CAPS_CHANGED], 0, GST_PAD_CAPS(otherpad)); } return result; @@ -1555,23 +1561,24 @@ enum { static GstObject *padtemplate_parent_class = NULL; static guint gst_padtemplate_signals[TEMPL_LAST_SIGNAL] = { 0 }; -GtkType +GType gst_padtemplate_get_type (void) { - static GtkType padtemplate_type = 0; + static GType padtemplate_type = 0; if (!padtemplate_type) { - static const GtkTypeInfo padtemplate_info = { - "GstPadTemplate", - sizeof(GstPadTemplate), + static const GTypeInfo padtemplate_info = { sizeof(GstPadTemplateClass), - (GtkClassInitFunc)gst_padtemplate_class_init, - (GtkObjectInitFunc)gst_padtemplate_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_padtemplate_class_init, + NULL, + NULL, + sizeof(GstPadTemplate), + 32, + (GInstanceInitFunc)gst_padtemplate_init, }; - padtemplate_type = gtk_type_unique(GST_TYPE_OBJECT,&padtemplate_info); + padtemplate_type = g_type_register_static(GST_TYPE_OBJECT, "GstPadTemplate", &padtemplate_info, 0); } return padtemplate_type; } @@ -1579,21 +1586,20 @@ gst_padtemplate_get_type (void) static void gst_padtemplate_class_init (GstPadTemplateClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstobject_class = (GstObjectClass*)klass; - padtemplate_parent_class = gtk_type_class(GST_TYPE_OBJECT); + padtemplate_parent_class = g_type_class_ref(GST_TYPE_OBJECT); gst_padtemplate_signals[TEMPL_PAD_CREATED] = - gtk_signal_new ("pad_created", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstPadTemplateClass, pad_created), - gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, + g_signal_newc ("pad_created", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstPadTemplateClass, pad_created), NULL, NULL, + g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_PAD); - gtk_object_class_add_signals (gtkobject_class, gst_padtemplate_signals, TEMPL_LAST_SIGNAL); gstobject_class->path_string_separator = "*"; } @@ -1626,7 +1632,7 @@ gst_padtemplate_new (gchar *name_template, g_return_val_if_fail (name_template != NULL, NULL); - new = gtk_type_new (gst_padtemplate_get_type ()); + new = g_object_new(gst_padtemplate_get_type () ,NULL); GST_PADTEMPLATE_NAME_TEMPLATE (new) = name_template; GST_PADTEMPLATE_DIRECTION (new) = direction; @@ -1872,22 +1878,23 @@ static void gst_ghost_pad_init (GstGhostPad *pad); static GstPad *ghost_pad_parent_class = NULL; //static guint gst_ghost_pad_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_ghost_pad_get_type(void) { - static GtkType pad_type = 0; + static GType pad_type = 0; if (!pad_type) { - static const GtkTypeInfo pad_info = { - "GstGhostPad", - sizeof(GstGhostPad), + static const GTypeInfo pad_info = { sizeof(GstGhostPadClass), - (GtkClassInitFunc)gst_ghost_pad_class_init, - (GtkObjectInitFunc)gst_ghost_pad_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_ghost_pad_class_init, + NULL, + NULL, + sizeof(GstGhostPad), + 8, + (GInstanceInitFunc)gst_ghost_pad_init, }; - pad_type = gtk_type_unique(GST_TYPE_PAD,&pad_info); + pad_type = g_type_register_static(GST_TYPE_PAD, "GstGhostPad", &pad_info, 0); } return pad_type; } @@ -1895,11 +1902,11 @@ gst_ghost_pad_get_type(void) { static void gst_ghost_pad_class_init (GstGhostPadClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; - ghost_pad_parent_class = gtk_type_class(GST_TYPE_PAD); + ghost_pad_parent_class = g_type_class_ref(GST_TYPE_PAD); } static void @@ -1926,7 +1933,7 @@ gst_ghost_pad_new (gchar *name, g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (GST_IS_PAD(pad), NULL); - ghostpad = gtk_type_new (gst_ghost_pad_get_type ()); + ghostpad = g_object_new(gst_ghost_pad_get_type () ,NULL); gst_pad_set_name (GST_PAD (ghostpad), name); GST_GPAD_REALPAD(ghostpad) = GST_PAD_REALIZE(pad); GST_PAD_PADTEMPLATE(ghostpad) = GST_PAD_PADTEMPLATE(pad); diff --git a/gst/gstpad.h b/gst/gstpad.h index dc75cd3cee..9626b34580 100644 --- a/gst/gstpad.h +++ b/gst/gstpad.h @@ -45,22 +45,22 @@ extern "C" { #define GST_TYPE_PAD (gst_pad_get_type ()) -#define GST_PAD(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_PAD,GstPad)) -#define GST_PAD_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_PAD,GstPadClass)) -#define GST_IS_PAD(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_PAD)) -#define GST_IS_PAD_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_PAD)) +#define GST_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PAD,GstPad)) +#define GST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PAD,GstPadClass)) +#define GST_IS_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PAD)) +#define GST_IS_PAD_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PAD)) #define GST_TYPE_REAL_PAD (gst_real_pad_get_type ()) -#define GST_REAL_PAD(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_REAL_PAD,GstRealPad)) -#define GST_REAL_PAD_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_REAL_PAD,GstRealPadClass)) -#define GST_IS_REAL_PAD(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_REAL_PAD)) -#define GST_IS_REAL_PAD_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_REAL_PAD)) +#define GST_REAL_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_REAL_PAD,GstRealPad)) +#define GST_REAL_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_REAL_PAD,GstRealPadClass)) +#define GST_IS_REAL_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_REAL_PAD)) +#define GST_IS_REAL_PAD_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_REAL_PAD)) #define GST_TYPE_GHOST_PAD (gst_ghost_pad_get_type ()) -#define GST_GHOST_PAD(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_GHOST_PAD,GstGhostPad)) -#define GST_GHOST_PAD_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_GHOST_PAD,GstGhostPadClass)) -#define GST_IS_GHOST_PAD(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_GHOST_PAD)) -#define GST_IS_GHOST_PAD_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_GHOST_PAD)) +#define GST_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GHOST_PAD,GstGhostPad)) +#define GST_GHOST_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GHOST_PAD,GstGhostPadClass)) +#define GST_IS_GHOST_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GHOST_PAD)) +#define GST_IS_GHOST_PAD_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GHOST_PAD)) //typedef struct _GstPad GstPad; @@ -74,7 +74,7 @@ typedef struct _GstGhostPadClass GstGhostPadClass; typedef enum { - GST_REGION_NONE, + GST_REGION_VOID, GST_REGION_OFFSET_LEN, GST_REGION_TIME_LEN, } GstRegionType; @@ -230,10 +230,10 @@ struct _GstGhostPadClass { /***** PadTemplate *****/ #define GST_TYPE_PADTEMPLATE (gst_padtemplate_get_type ()) -#define GST_PADTEMPLATE(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_PADTEMPLATE,GstPadTemplate)) -#define GST_PADTEMPLATE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_PADTEMPLATE,GstPadTemplateClass)) -#define GST_IS_PADTEMPLATE(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_PADTEMPLATE)) -#define GST_IS_PADTEMPLATE_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_PADTEMPLATE)) +#define GST_PADTEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PADTEMPLATE,GstPadTemplate)) +#define GST_PADTEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PADTEMPLATE,GstPadTemplateClass)) +#define GST_IS_PADTEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PADTEMPLATE)) +#define GST_IS_PADTEMPLATE_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PADTEMPLATE)) typedef enum { GST_PAD_ALWAYS, @@ -288,9 +288,9 @@ name (void) \ #define GST_PADTEMPLATE_GET(fact) (fact)() -GtkType gst_pad_get_type (void); -GtkType gst_real_pad_get_type (void); -GtkType gst_ghost_pad_get_type (void); +GType gst_pad_get_type (void); +GType gst_real_pad_get_type (void); +GType gst_ghost_pad_get_type (void); GstPad* gst_pad_new (gchar *name, GstPadDirection direction); #define gst_pad_destroy(pad) gst_object_destroy (GST_OBJECT (pad)) @@ -378,7 +378,7 @@ GstPad * gst_ghost_pad_new (gchar *name,GstPad *pad); /* templates and factories */ -GtkType gst_padtemplate_get_type (void); +GType gst_padtemplate_get_type (void); GstPadTemplate* gst_padtemplate_new (gchar *name_template, GstPadDirection direction, GstPadPresence presence, diff --git a/gst/gstparse.c b/gst/gstparse.c index 75dc668af7..0ca8bb1e74 100644 --- a/gst/gstparse.c +++ b/gst/gstparse.c @@ -201,8 +201,8 @@ if (GST_IS_GHOST_PAD(srcpad)) GST_DEBUG(0,"it's a ghost pad\n"); argval = pos+1; DEBUG("attempting to set argument '%s' to '%s' on element '%s'\n", argname,argval,GST_ELEMENT_NAME(previous)); - //gtk_object_set(GTK_OBJECT(previous),argname,argval,NULL); - gst_util_set_object_arg (GTK_OBJECT(previous), argname, argval); + //gtk_object_set(G_OBJECT(previous),argname,argval,NULL); + gst_util_set_object_arg (G_OBJECT(previous), argname, argval); g_free(argname); // element or argument, or beginning of bin or thread @@ -278,8 +278,8 @@ if (GST_IS_GHOST_PAD(srcpad)) GST_DEBUG(0,"it's a ghost pad\n"); GST_DEBUG(0,"SETTING UP dynamic connection %s:%s and %s:%s\n",gst_element_get_name (previous), srcpadname,GST_DEBUG_PAD_NAME(sinkpad)); - gtk_signal_connect (GTK_OBJECT (previous), "new_pad", dynamic_connect, connect); - gtk_signal_connect (GTK_OBJECT (previous), "new_ghost_pad", dynamic_connect, connect); + gtk_signal_connect (G_OBJECT (previous), "new_pad", dynamic_connect, connect); + gtk_signal_connect (G_OBJECT (previous), "new_ghost_pad", dynamic_connect, connect); } else { GST_DEBUG(0,"CONNECTING %s:%s and %s:%s\n",GST_DEBUG_PAD_NAME(srcpad),GST_DEBUG_PAD_NAME(sinkpad)); @@ -294,7 +294,7 @@ if (GST_IS_GHOST_PAD(srcpad)) GST_DEBUG(0,"it's a ghost pad\n"); // thomas: if we're the first element, connect eos signal if (elementcount == 1) { - gtk_signal_connect (GTK_OBJECT (element), "eos", + gtk_signal_connect (G_OBJECT (element), "eos", GTK_SIGNAL_FUNC (have_eos), NULL); } diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c index 17b4959c53..85a67dadea 100644 --- a/gst/gstpipeline.c +++ b/gst/gstpipeline.c @@ -60,22 +60,23 @@ static GstElementStateReturn gst_pipeline_change_state (GstElement *element); static GstBinClass *parent_class = NULL; //static guint gst_pipeline_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_pipeline_get_type (void) { - static GtkType pipeline_type = 0; + static GType pipeline_type = 0; if (!pipeline_type) { - static const GtkTypeInfo pipeline_info = { - "GstPipeline", - sizeof(GstPipeline), + static const GTypeInfo pipeline_info = { sizeof(GstPipelineClass), - (GtkClassInitFunc)gst_pipeline_class_init, - (GtkObjectInitFunc)gst_pipeline_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_pipeline_class_init, + NULL, + NULL, + sizeof(GstPipeline), + 0, + (GInstanceInitFunc)gst_pipeline_init, }; - pipeline_type = gtk_type_unique (gst_bin_get_type (), &pipeline_info); + pipeline_type = g_type_register_static (GST_TYPE_BIN, "GstPipeline", &pipeline_info, 0); } return pipeline_type; } @@ -87,7 +88,7 @@ gst_pipeline_class_init (GstPipelineClass *klass) gstelement_class = (GstElementClass*)klass; - parent_class = gtk_type_class(gst_bin_get_type()); + parent_class = g_type_class_ref(gst_bin_get_type()); gstelement_class->change_state = gst_pipeline_change_state; } diff --git a/gst/gstpipeline.h b/gst/gstpipeline.h index 27f14e4526..46209b7661 100644 --- a/gst/gstpipeline.h +++ b/gst/gstpipeline.h @@ -37,13 +37,13 @@ extern GstElementDetails gst_pipeline_details; #define GST_TYPE_PIPELINE \ (gst_pipeline_get_type()) #define GST_PIPELINE(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_PIPELINE,GstPipeline)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PIPELINE,GstPipeline)) #define GST_PIPELINE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_PIPELINE,GstPipelineClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PIPELINE,GstPipelineClass)) #define GST_IS_PIPELINE(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_PIPELINE)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PIPELINE)) #define GST_IS_PIPELINE_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPELINE)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPELINE)) typedef struct _GstPipeline GstPipeline; typedef struct _GstPipelineClass GstPipelineClass; @@ -56,7 +56,7 @@ struct _GstPipelineClass { GstBinClass parent_class; }; -GtkType gst_pipeline_get_type (void); +GType gst_pipeline_get_type (void); GstElement* gst_pipeline_new (const guchar *name); #define gst_pipeline_destroy(pipeline) gst_object_destroy(GST_OBJECT(pipeline)) diff --git a/gst/gstqueue.c b/gst/gstqueue.c index 944b9debed..7daa193e62 100644 --- a/gst/gstqueue.c +++ b/gst/gstqueue.c @@ -70,8 +70,8 @@ enum { static void gst_queue_class_init (GstQueueClass *klass); static void gst_queue_init (GstQueue *queue); -static void gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id); -static void gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id); +static void gst_queue_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_queue_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static gboolean gst_queue_handle_eos (GstPad *pad); static GstPadNegotiateReturn gst_queue_handle_negotiate_src (GstPad *pad, GstCaps **caps, gpointer *data); @@ -85,17 +85,17 @@ static void gst_queue_flush (GstQueue *queue); static GstElementStateReturn gst_queue_change_state (GstElement *element); -static GtkType +static GType queue_leaky_get_type(void) { - static GtkType queue_leaky_type = 0; - static GtkEnumValue queue_leaky[] = { + static GType queue_leaky_type = 0; + static GEnumValue queue_leaky[] = { { GST_QUEUE_NO_LEAK, "0", "Not Leaky" }, { GST_QUEUE_LEAK_UPSTREAM, "1", "Leaky on Upstream" }, { GST_QUEUE_LEAK_DOWNSTREAM, "2", "Leaky on Downstream" }, { 0, NULL, NULL }, }; if (!queue_leaky_type) { - queue_leaky_type = gtk_type_register_enum("GstQueueLeaky", queue_leaky); + queue_leaky_type = g_enum_register_static("GstQueueLeaky", queue_leaky); } return queue_leaky_type; } @@ -105,22 +105,23 @@ queue_leaky_get_type(void) { static GstElementClass *parent_class = NULL; //static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_queue_get_type(void) { - static GtkType queue_type = 0; + static GType queue_type = 0; if (!queue_type) { - static const GtkTypeInfo queue_info = { - "GstQueue", - sizeof(GstQueue), + static const GTypeInfo queue_info = { sizeof(GstQueueClass), - (GtkClassInitFunc)gst_queue_class_init, - (GtkObjectInitFunc)gst_queue_init, - (GtkArgSetFunc)gst_queue_set_arg, - (GtkArgGetFunc)gst_queue_get_arg, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_queue_class_init, + NULL, + NULL, + sizeof(GstQueue), + 4, + (GInstanceInitFunc)gst_queue_init, }; - queue_type = gtk_type_unique (GST_TYPE_ELEMENT, &queue_info); + queue_type = g_type_register_static (GST_TYPE_ELEMENT, "GstQueue", &queue_info, 0); } return queue_type; } @@ -128,23 +129,34 @@ gst_queue_get_type(void) { static void gst_queue_class_init (GstQueueClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstElementClass *gstelement_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstelement_class = (GstElementClass*)klass; - parent_class = gtk_type_class (GST_TYPE_ELEMENT); + parent_class = g_type_class_ref (GST_TYPE_ELEMENT); +/* gtk_object_add_arg_type ("GstQueue::leaky", GST_TYPE_QUEUE_LEAKY, GTK_ARG_READWRITE, ARG_LEAKY); - gtk_object_add_arg_type ("GstQueue::level", GTK_TYPE_INT, + gtk_object_add_arg_type ("GstQueue::level", G_TYPE_INT, GTK_ARG_READABLE, ARG_LEVEL); - gtk_object_add_arg_type ("GstQueue::max_level", GTK_TYPE_INT, + gtk_object_add_arg_type ("GstQueue::max_level", G_TYPE_INT, GTK_ARG_READWRITE, ARG_MAX_LEVEL); +*/ + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LEAKY, + g_param_spec_enum("leaky","Leaky","Where the queue leaks, if at all.", + GST_TYPE_QUEUE_LEAKY,GST_QUEUE_NO_LEAK,G_PARAM_READWRITE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LEVEL, + g_param_spec_int("level","Level","How many buffers are in the queue.", + 0,G_MAXINT,0,G_PARAM_READABLE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MAX_LEVEL, + g_param_spec_int("max_level","Maximum Level","How many buffers the queue holds.", + 0,G_MAXINT,100,G_PARAM_READWRITE)); - gtkobject_class->set_arg = gst_queue_set_arg; - gtkobject_class->get_arg = gst_queue_get_arg; + gobject_class->set_property = gst_queue_set_property; + gobject_class->get_property = gst_queue_get_property; gstelement_class->change_state = gst_queue_change_state; } @@ -306,16 +318,16 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf) while (queue->level_buffers >= queue->size_buffers) { // if there's a pending state change for this queue or its manager, switch // back to iterator so bottom half of state change executes - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING || -// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING || +// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) GST_STATE_PENDING(GST_SCHED_PARENT(GST_ELEMENT_SCHED(GST_PAD_PARENT(GST_PAD_PEER(queue->sinkpad))))) != -GST_STATE_NONE_PENDING) +GST_STATE_VOID_PENDING) { GST_DEBUG(GST_CAT_DATAFLOW,"interrupted!!\n"); - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING)\n"); - if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING\n"); + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING)\n"); + if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING\n"); GST_UNLOCK(queue); cothread_switch(cothread_current_main()); } @@ -376,16 +388,16 @@ gst_queue_get (GstPad *pad) // if there's a pending state change for this queue or its manager, switch // back to iterator so bottom half of state change executes - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING || -// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING || +// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) GST_STATE_PENDING(GST_SCHED_PARENT(GST_ELEMENT_SCHED(GST_PAD_PARENT(GST_PAD_PEER(queue->srcpad))))) != -GST_STATE_NONE_PENDING) +GST_STATE_VOID_PENDING) { GST_DEBUG(GST_CAT_DATAFLOW,"interrupted!!\n"); - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING)\n"); - if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING\n"); + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING)\n"); + if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING\n"); GST_UNLOCK(queue); cothread_switch(cothread_current_main()); } @@ -435,11 +447,12 @@ gst_queue_change_state (GstElement *element) gst_queue_flush (queue); } - /* if we haven't failed already, give the parent class a chance to ;-) */ +/* FIXME FIXME FIXME FIXME FIXME!!!! + // if we haven't failed already, give the parent class a chance to ;-) if (GST_ELEMENT_CLASS (parent_class)->change_state) { gboolean valid_handler = FALSE; - guint state_change_id = gtk_signal_lookup("state_change", GTK_OBJECT_TYPE(element)); + guint state_change_id = gtk_signal_lookup("state_change", G_OBJECT_TYPE(element)); // determine whether we need to block the parent (element) class' // STATE_CHANGE signal so we can UNLOCK before returning. we block @@ -450,22 +463,23 @@ gst_queue_change_state (GstElement *element) // if element change_state() emits other signals, they need to be blocked // as well. if (state_change_id && - gtk_signal_handler_pending(GTK_OBJECT(element), state_change_id, FALSE)) + gtk_signal_handler_pending(G_OBJECT(element), state_change_id, FALSE)) valid_handler = TRUE; if (valid_handler) - gtk_signal_handler_block(GTK_OBJECT(element), state_change_id); + gtk_signal_handler_block(G_OBJECT(element), state_change_id); ret = GST_ELEMENT_CLASS (parent_class)->change_state (element); if (valid_handler) - gtk_signal_handler_unblock(GTK_OBJECT(element), state_change_id); + gtk_signal_handler_unblock(G_OBJECT(element), state_change_id); // UNLOCK, *then* emit signal (if there's one there) GST_UNLOCK(queue); if (valid_handler) - gtk_signal_emit(GTK_OBJECT (element), state_change_id, GST_STATE(element)); + gtk_signal_emit(G_OBJECT (element), state_change_id, GST_STATE(element)); } else +*/ { ret = GST_STATE_SUCCESS; GST_UNLOCK(queue); @@ -476,7 +490,7 @@ gst_queue_change_state (GstElement *element) static void -gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id) +gst_queue_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstQueue *queue; @@ -485,20 +499,21 @@ gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id) queue = GST_QUEUE (object); - switch(id) { + switch (prop_id) { case ARG_LEAKY: - queue->leaky = GTK_VALUE_INT (*arg); + queue->leaky = g_value_get_int(value); break; case ARG_MAX_LEVEL: - queue->size_buffers = GTK_VALUE_INT (*arg); + queue->size_buffers = g_value_get_int(value); break; default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void -gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id) +gst_queue_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstQueue *queue; @@ -507,18 +522,18 @@ gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id) queue = GST_QUEUE (object); - switch (id) { + switch (prop_id) { case ARG_LEAKY: - GTK_VALUE_INT (*arg) = queue->leaky; + g_value_set_int(value, queue->leaky); break; case ARG_LEVEL: - GTK_VALUE_INT (*arg) = queue->level_buffers; + g_value_set_int(value, queue->level_buffers); break; case ARG_MAX_LEVEL: - GTK_VALUE_INT (*arg) = queue->size_buffers; + g_value_set_int(value, queue->size_buffers); break; default: - arg->type = GTK_TYPE_INVALID; + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } diff --git a/gst/gstqueue.h b/gst/gstqueue.h index 085d5ac122..02b73f2d0a 100644 --- a/gst/gstqueue.h +++ b/gst/gstqueue.h @@ -39,13 +39,13 @@ GstElementDetails gst_queue_details; #define GST_TYPE_QUEUE \ (gst_queue_get_type()) #define GST_QUEUE(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_QUEUE,GstQueue)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_QUEUE,GstQueue)) #define GST_QUEUE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass)) #define GST_IS_QUEUE(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_QUEUE)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QUEUE)) #define GST_IS_QUEUE_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE)) enum { GST_QUEUE_NO_LEAK = 0, @@ -90,7 +90,7 @@ struct _GstQueueClass { void (*high_watermark) (GstQueue *queue, gint level); }; -GtkType gst_queue_get_type (void); +GType gst_queue_get_type (void); #ifdef __cplusplus } diff --git a/gst/gstscheduler.c b/gst/gstscheduler.c index 9a3e3f1348..8962aab5d3 100644 --- a/gst/gstscheduler.c +++ b/gst/gstscheduler.c @@ -100,13 +100,13 @@ gst_schedule_src_wrapper (int argc,char *argv[]) pads = g_list_next(pads); if (GST_RPAD_DIRECTION(realpad) == GST_PAD_SRC) { GST_DEBUG (GST_CAT_DATAFLOW,"calling _getfunc for %s:%s\n",GST_DEBUG_PAD_NAME(realpad)); - if (realpad->regiontype != GST_REGION_NONE) { + if (realpad->regiontype != GST_REGION_VOID) { g_return_val_if_fail (GST_RPAD_GETREGIONFUNC(realpad) != NULL, 0); // if (GST_RPAD_GETREGIONFUNC(realpad) == NULL) // fprintf(stderr,"error, no getregionfunc in \"%s\"\n", name); // else buf = (GST_RPAD_GETREGIONFUNC(realpad))((GstPad*)realpad,realpad->regiontype,realpad->offset,realpad->len); - realpad->regiontype = GST_REGION_NONE; + realpad->regiontype = GST_REGION_VOID; } else { g_return_val_if_fail (GST_RPAD_GETFUNC(realpad) != NULL, 0); // if (GST_RPAD_GETFUNC(realpad) == NULL) @@ -429,7 +429,7 @@ void gst_bin_schedule_func(GstBin *bin) { GST_DEBUG (GST_CAT_SCHEDULING,"adding '%s' to chain\n",GST_ELEMENT_NAME(element)); chain->elements = g_list_prepend (chain->elements, element); chain->num_elements++; - gtk_signal_connect (GTK_OBJECT (element), "eos", gst_scheduler_handle_eos, chain); + gtk_signal_connect (G_OBJECT (element), "eos", gst_scheduler_handle_eos, chain); // set the cothreads flag as appropriate if (GST_FLAG_IS_SET (element, GST_ELEMENT_USE_COTHREAD)) chain->need_cothreads = TRUE; @@ -479,7 +479,7 @@ void gst_bin_schedule_func(GstBin *bin) { if ((GST_RPAD_DIRECTION(pad) == GST_PAD_SINK) && (GST_FLAG_IS_SET (peerparent, GST_ELEMENT_DECOUPLED))) { chain->entries = g_list_prepend (chain->entries, peerparent); - gtk_signal_connect (GTK_OBJECT (peerparent), "eos", gst_scheduler_handle_eos, chain); + gtk_signal_connect (G_OBJECT (peerparent), "eos", gst_scheduler_handle_eos, chain); GST_DEBUG (GST_CAT_SCHEDULING,"added '%s' as DECOUPLED entry into the chain\n",GST_ELEMENT_NAME(peerparent)); } } else @@ -798,21 +798,22 @@ static void gst_schedule_init (GstSchedule *schedule); static GstObjectClass *parent_class = NULL; -GtkType gst_schedule_get_type(void) { - static GtkType schedule_type = 0; +GType gst_schedule_get_type(void) { + static GType schedule_type = 0; if (!schedule_type) { - static const GtkTypeInfo schedule_info = { - "GstSchedule", - sizeof(GstSchedule), + static const GTypeInfo schedule_info = { sizeof(GstScheduleClass), - (GtkClassInitFunc)gst_schedule_class_init, - (GtkObjectInitFunc)gst_schedule_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_schedule_class_init, + NULL, + NULL, + sizeof(GstSchedule), + 0, + (GInstanceInitFunc)gst_schedule_init, }; - schedule_type = gtk_type_unique(GST_TYPE_OBJECT,&schedule_info); + schedule_type = g_type_register_static(GST_TYPE_OBJECT, "GstSchedule", &schedule_info, 0); } return schedule_type; } @@ -820,7 +821,7 @@ GtkType gst_schedule_get_type(void) { static void gst_schedule_class_init (GstScheduleClass *klass) { - parent_class = gtk_type_class(GST_TYPE_OBJECT); + parent_class = g_type_class_ref(GST_TYPE_OBJECT); } static void @@ -840,7 +841,7 @@ gst_schedule_init (GstSchedule *schedule) GstSchedule* gst_schedule_new(GstElement *parent) { - GstSchedule *sched = GST_SCHEDULE (gtk_type_new (GST_TYPE_SCHEDULE)); + GstSchedule *sched = GST_SCHEDULE (g_object_new(GST_TYPE_SCHEDULE,NULL)); sched->parent = parent; @@ -1339,7 +1340,7 @@ GST_DEBUG(GST_CAT_SCHEDULING,"there are %d elements in this chain\n",chain->num_ // if it was, return to gstthread.c::gst_thread_main_loop() to // execute the state change. GST_DEBUG (GST_CAT_DATAFLOW,"cothread switch ended or interrupted\n"); - if (GST_STATE_PENDING(GST_SCHEDULE(sched)->parent) != GST_STATE_NONE_PENDING) + if (GST_STATE_PENDING(GST_SCHEDULE(sched)->parent) != GST_STATE_VOID_PENDING) { GST_DEBUG (GST_CAT_DATAFLOW,"handle pending state %d\n", GST_STATE_PENDING(GST_SCHEDULE(sched)->parent)); diff --git a/gst/gstscheduler.h b/gst/gstscheduler.h index 39699dabb9..4149b331c5 100644 --- a/gst/gstscheduler.h +++ b/gst/gstscheduler.h @@ -36,13 +36,13 @@ extern "C" { #define GST_TYPE_SCHEDULE \ (gst_schedule_get_type()) #define GST_SCHEDULE(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_SCHEDULE,GstSchedule)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SCHEDULE,GstSchedule)) #define GST_SCHEDULE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_SCHEDULE,GstScheduleClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SCHEDULE,GstScheduleClass)) #define GST_IS_SCHEDULE(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_SCHEDULE)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SCHEDULE)) #define GST_IS_SCHEDULE_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SCHEDULE)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SCHEDULE)) #define GST_SCHED_PARENT(sched) ((sched)->parent) @@ -126,7 +126,7 @@ struct _GstScheduleChain { }; -GtkType gst_schedule_get_type (void); +GType gst_schedule_get_type (void); GstSchedule* gst_schedule_new (GstElement *parent); void gst_schedule_add_element (GstSchedule *sched, GstElement *element); diff --git a/gst/gstthread.c b/gst/gstthread.c index e4fc66e2fc..d32d56b6a5 100644 --- a/gst/gstthread.c +++ b/gst/gstthread.c @@ -61,10 +61,10 @@ enum { static void gst_thread_class_init (GstThreadClass *klass); static void gst_thread_init (GstThread *thread); -static void gst_thread_real_destroy (GtkObject *gtk_object); +static void gst_thread_real_destroy (GObject *gtk_object); -static void gst_thread_set_arg (GtkObject *object, GtkArg *arg, guint id); -static void gst_thread_get_arg (GtkObject *object, GtkArg *arg, guint id); +static void gst_thread_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_thread_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static GstElementStateReturn gst_thread_change_state (GstElement *element); @@ -78,22 +78,23 @@ static void* gst_thread_main_loop (void *arg); static GstBinClass *parent_class = NULL; //static guint gst_thread_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_thread_get_type(void) { - static GtkType thread_type = 0; + static GType thread_type = 0; if (!thread_type) { - static const GtkTypeInfo thread_info = { - "GstThread", - sizeof(GstThread), + static const GTypeInfo thread_info = { sizeof(GstThreadClass), - (GtkClassInitFunc)gst_thread_class_init, - (GtkObjectInitFunc)gst_thread_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_thread_class_init, + NULL, + NULL, + sizeof(GstThread), + 4, + (GInstanceInitFunc)gst_thread_init, }; - thread_type = gtk_type_unique(GST_TYPE_BIN,&thread_info); + thread_type = g_type_register_static(GST_TYPE_BIN, "GstThread", &thread_info, 0); } return thread_type; } @@ -101,22 +102,28 @@ gst_thread_get_type(void) { static void gst_thread_class_init (GstThreadClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstObjectClass *gstobject_class; GstElementClass *gstelement_class; GstBinClass *gstbin_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstobject_class = (GstObjectClass*)klass; gstelement_class = (GstElementClass*)klass; gstbin_class = (GstBinClass*)klass; - parent_class = gtk_type_class (GST_TYPE_BIN); + parent_class = g_type_class_ref (GST_TYPE_BIN); - gtk_object_add_arg_type ("GstThread::create_thread", GTK_TYPE_BOOL, +/* + gtk_object_add_arg_type ("GstThread::create_thread", G_TYPE_BOOL, GTK_ARG_READWRITE, ARG_CREATE_THREAD); +*/ + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CREATE_THREAD, + g_param_spec_boolean("create_thread", "Create Thread", "Whether to create a thread.", + TRUE,G_PARAM_READWRITE)); - gtkobject_class->destroy = gst_thread_real_destroy; +// FIXME! +// gobject_class->destroy = gst_thread_real_destroy; gstobject_class->save_thyself = gst_thread_save_thyself; gstobject_class->restore_thyself = gst_thread_restore_thyself; @@ -125,8 +132,8 @@ gst_thread_class_init (GstThreadClass *klass) // gstbin_class->schedule = gst_thread_schedule_dummy; - gtkobject_class->set_arg = gst_thread_set_arg; - gtkobject_class->get_arg = gst_thread_get_arg; + gobject_class->set_property = gst_thread_set_property; + gobject_class->get_property = gst_thread_get_property; } @@ -154,7 +161,7 @@ gst_thread_init (GstThread *thread) } static void -gst_thread_real_destroy (GtkObject *gtk_object) +gst_thread_real_destroy (GObject *gtk_object) { GstThread *thread = GST_THREAD (gtk_object); @@ -163,24 +170,23 @@ gst_thread_real_destroy (GtkObject *gtk_object) g_mutex_free (thread->lock); g_cond_free (thread->cond); - if (GTK_OBJECT_CLASS (parent_class)->destroy) - GTK_OBJECT_CLASS (parent_class)->destroy (gtk_object); +// FIXME! +// if (G_OBJECT_CLASS (parent_class)->destroy) +// G_OBJECT_CLASS (parent_class)->destroy (gtk_object); gst_object_destroy (GST_OBJECT (GST_ELEMENT_SCHED (thread))); gst_object_unref (GST_OBJECT (GST_ELEMENT_SCHED (thread))); } static void -gst_thread_set_arg (GtkObject *object, - GtkArg *arg, - guint id) +gst_thread_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { /* it's not null if we got it, but it might not be ours */ g_return_if_fail (GST_IS_THREAD (object)); - switch(id) { + switch (prop_id) { case ARG_CREATE_THREAD: - if (GTK_VALUE_BOOL (*arg)) { + if (g_value_get_boolean(value)) { GST_INFO (GST_CAT_THREAD,"turning ON the creation of the thread"); GST_FLAG_SET (object, GST_THREAD_CREATE); // GST_DEBUG (GST_CAT_THREAD,"flags are 0x%08x\n", GST_FLAGS (object)); @@ -191,23 +197,23 @@ gst_thread_set_arg (GtkObject *object, } break; default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void -gst_thread_get_arg (GtkObject *object, - GtkArg *arg, - guint id) +gst_thread_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { /* it's not null if we got it, but it might not be ours */ g_return_if_fail (GST_IS_THREAD (object)); - switch (id) { + switch (prop_id) { case ARG_CREATE_THREAD: - GTK_VALUE_BOOL (*arg) = GST_FLAG_IS_SET (object, GST_THREAD_CREATE); + g_value_set_boolean(value, GST_FLAG_IS_SET (object, GST_THREAD_CREATE)); break; default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } @@ -464,7 +470,7 @@ gst_thread_change_state (GstElement *element) static void gst_thread_update_state (GstThread *thread) { // check for state change - if (GST_STATE_PENDING(thread) != GST_STATE_NONE_PENDING) { + if (GST_STATE_PENDING(thread) != GST_STATE_VOID_PENDING) { // punt and change state on all the children if (GST_ELEMENT_CLASS (parent_class)->change_state) GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT(thread)); diff --git a/gst/gstthread.h b/gst/gstthread.h index be8b49cd86..a75261e3e6 100644 --- a/gst/gstthread.h +++ b/gst/gstthread.h @@ -53,13 +53,13 @@ typedef enum { #define GST_TYPE_THREAD \ (gst_thread_get_type()) #define GST_THREAD(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_THREAD,GstThread)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_THREAD,GstThread)) #define GST_THREAD_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_THREAD,GstThreadClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_THREAD,GstThreadClass)) #define GST_IS_THREAD(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_THREAD)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_THREAD)) #define GST_IS_THREAD_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_THREAD)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_THREAD)) typedef struct _GstThread GstThread; typedef struct _GstThreadClass GstThreadClass; @@ -80,7 +80,7 @@ struct _GstThreadClass { GstBinClass parent_class; }; -GtkType gst_thread_get_type (void); +GType gst_thread_get_type (void); GstElement* gst_thread_new (const guchar *name); diff --git a/gst/gsttypefind.c b/gst/gsttypefind.c index 2e045e0b85..7fa4877189 100644 --- a/gst/gsttypefind.c +++ b/gst/gsttypefind.c @@ -55,31 +55,32 @@ enum { static void gst_typefind_class_init (GstTypeFindClass *klass); static void gst_typefind_init (GstTypeFind *typefind); -static void gst_typefind_set_arg (GtkObject *object, GtkArg *arg, guint id); -static void gst_typefind_get_arg (GtkObject *object, GtkArg *arg, guint id); +static void gst_typefind_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_typefind_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void gst_typefind_chain (GstPad *pad, GstBuffer *buf); static GstElementClass *parent_class = NULL; static guint gst_typefind_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_typefind_get_type (void) { - static GtkType typefind_type = 0; + static GType typefind_type = 0; if (!typefind_type) { - static const GtkTypeInfo typefind_info = { - "GstTypeFind", - sizeof(GstTypeFind), + static const GTypeInfo typefind_info = { sizeof(GstTypeFindClass), - (GtkClassInitFunc)gst_typefind_class_init, - (GtkObjectInitFunc)gst_typefind_init, - (GtkArgSetFunc)gst_typefind_set_arg, - (GtkArgGetFunc)gst_typefind_get_arg, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_typefind_class_init, + NULL, + NULL, + sizeof(GstTypeFind), + 0, + (GInstanceInitFunc)gst_typefind_init, }; - typefind_type = gtk_type_unique (GST_TYPE_ELEMENT, &typefind_info); + typefind_type = g_type_register_static (GST_TYPE_ELEMENT, "GstTypeFind", &typefind_info, 0); } return typefind_type; } @@ -87,25 +88,22 @@ gst_typefind_get_type (void) static void gst_typefind_class_init (GstTypeFindClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; - parent_class = gtk_type_class (GST_TYPE_ELEMENT); + parent_class = g_type_class_ref (GST_TYPE_ELEMENT); - gtk_object_add_arg_type("GstTypeFind::caps", GTK_TYPE_POINTER, - GTK_ARG_READABLE, ARG_CAPS); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CAPS, + g_param_spec_pointer("caps", "Caps", "Found capabilities", G_PARAM_READABLE)); gst_typefind_signals[HAVE_TYPE] = - gtk_signal_new ("have_type", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstTypeFindClass, have_type), - gtk_marshal_NONE__INT, GTK_TYPE_NONE, 1, GTK_TYPE_POINTER); + g_signal_newc ("have_type", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstTypeFindClass, have_type), NULL, NULL, + g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_POINTER); - gtk_object_class_add_signals (gtkobject_class, gst_typefind_signals, - LAST_SIGNAL); - - gtkobject_class->set_arg = gst_typefind_set_arg; - gtkobject_class->get_arg = gst_typefind_get_arg; + gobject_class->set_property = gst_typefind_set_property; + gobject_class->get_property = gst_typefind_get_property; } static void @@ -117,7 +115,7 @@ gst_typefind_init (GstTypeFind *typefind) } static void -gst_typefind_set_arg (GtkObject *object, GtkArg *arg, guint id) +gst_typefind_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstTypeFind *typefind; @@ -126,14 +124,14 @@ gst_typefind_set_arg (GtkObject *object, GtkArg *arg, guint id) typefind = GST_TYPEFIND (object); - switch(id) { + switch (prop_id) { default: break; } } static void -gst_typefind_get_arg (GtkObject *object, GtkArg *arg, guint id) +gst_typefind_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstTypeFind *typefind; @@ -142,9 +140,9 @@ gst_typefind_get_arg (GtkObject *object, GtkArg *arg, guint id) typefind = GST_TYPEFIND (object); - switch(id) { + switch (prop_id) { case ARG_CAPS: - GTK_VALUE_POINTER (*arg) = typefind->caps; + g_value_set_pointer(value, typefind->caps); break; default: break; @@ -189,7 +187,7 @@ gst_typefind_chain (GstPad *pad, GstBuffer *buf) { /* FIXME: this should all be in an _emit() wrapper eventually */ int oldstate = GST_STATE(typefind); gst_object_ref (GST_OBJECT (typefind)); - gtk_signal_emit (GTK_OBJECT (typefind), gst_typefind_signals[HAVE_TYPE], + g_signal_emit (G_OBJECT (typefind), gst_typefind_signals[HAVE_TYPE], 0, typefind->caps); if (GST_STATE(typefind) != oldstate) { gst_object_unref (GST_OBJECT (typefind)); diff --git a/gst/gsttypefind.h b/gst/gsttypefind.h index 6b42015a06..ff3cf061ab 100644 --- a/gst/gsttypefind.h +++ b/gst/gsttypefind.h @@ -37,13 +37,13 @@ GstElementDetails gst_typefind_details; #define GST_TYPE_TYPEFIND \ (gst_typefind_get_type()) #define GST_TYPEFIND(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_TYPEFIND,GstTypeFind)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TYPEFIND,GstTypeFind)) #define GST_TYPEFIND_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_TYPEFIND,GstTypeFindClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TYPEFIND,GstTypeFindClass)) #define GST_IS_TYPEFIND(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_TYPEFIND)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TYPEFIND)) #define GST_IS_TYPEFIND_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_TYPEFIND)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TYPEFIND)) typedef struct _GstTypeFind GstTypeFind; typedef struct _GstTypeFindClass GstTypeFindClass; @@ -63,7 +63,7 @@ struct _GstTypeFindClass { void (*have_type) (GstElement *element); }; -GtkType gst_typefind_get_type (void); +GType gst_typefind_get_type (void); #ifdef __cplusplus diff --git a/gst/gstutils.c b/gst/gstutils.c index 49ddf0d819..3b8618958d 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -2,7 +2,7 @@ * Copyright (C) 1999,2000 Erik Walthinsen * 2000 Wim Taymans * - * gstutils.c: Utility functions: gtk_get_arg stuff, etc. + * gstutils.c: Utility functions: gtk_get_property stuff, etc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -37,13 +37,12 @@ * Returns: the property of the object */ gint -gst_util_get_int_arg (GtkObject *object,guchar *argname) +gst_util_get_int_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_INT(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_int(&value); } /** @@ -56,13 +55,12 @@ gst_util_get_int_arg (GtkObject *object,guchar *argname) * Returns: the property of the object */ gint -gst_util_get_bool_arg (GtkObject *object,guchar *argname) +gst_util_get_bool_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_BOOL(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_boolean(&value); } /** @@ -75,13 +73,12 @@ gst_util_get_bool_arg (GtkObject *object,guchar *argname) * Returns: the property of the object */ glong -gst_util_get_long_arg (GtkObject *object,guchar *argname) +gst_util_get_long_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_LONG(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_long(&value); } /** @@ -94,13 +91,12 @@ gst_util_get_long_arg (GtkObject *object,guchar *argname) * Returns: the property of the object */ gfloat -gst_util_get_float_arg (GtkObject *object,guchar *argname) +gst_util_get_float_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_FLOAT(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_float(&value); } /** @@ -113,13 +109,12 @@ gst_util_get_float_arg (GtkObject *object,guchar *argname) * Returns: the property of the object */ gdouble -gst_util_get_double_arg (GtkObject *object,guchar *argname) +gst_util_get_double_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_DOUBLE(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_double(&value); } /** @@ -131,14 +126,13 @@ gst_util_get_double_arg (GtkObject *object,guchar *argname) * * Returns: the property of the object */ -guchar* -gst_util_get_string_arg (GtkObject *object,guchar *argname) +gchar* +gst_util_get_string_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - return GTK_VALUE_STRING(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_string(&value); } /** @@ -151,18 +145,16 @@ gst_util_get_string_arg (GtkObject *object,guchar *argname) * Returns: the property of the object */ gpointer -gst_util_get_pointer_arg (GtkObject *object,guchar *argname) +gst_util_get_pointer_arg (GObject *object,gchar *argname) { - GtkArg arg; + GValue value; - arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); - - return GTK_VALUE_POINTER(arg); + g_object_get_property(G_OBJECT(object),argname,&value); + return g_value_get_pointer(&value); } /** - * gst_util_get_widget_arg: + * gst_util_get_widget_property: * @object: the object to query * @argname: the name of the argument * @@ -170,16 +162,18 @@ gst_util_get_pointer_arg (GtkObject *object,guchar *argname) * * Returns: the property of the object */ +/* COMMENTED OUT BECAUSE WE HAVE NO MORE gtk.h GtkWidget* -gst_util_get_widget_arg (GtkObject *object,guchar *argname) +gst_util_get_widget_property (GObject *object,gchar *argname) { GtkArg arg; arg.name = argname; - gtk_object_getv(GTK_OBJECT(object),1,&arg); + gtk_object_getv(G_OBJECT(object),1,&arg); - return GTK_WIDGET(GTK_VALUE_OBJECT(arg)); + return GTK_WIDGET(G_VALUE_OBJECT(arg)); } +*/ /** * gst_util_dump_mem: @@ -218,80 +212,75 @@ gst_util_dump_mem (guchar *mem, guint size) * sets the argument with it. */ void -gst_util_set_object_arg (GtkObject *object, guchar *name, gchar *value) +gst_util_set_object_arg (GObject *object, gchar *name, gchar *value) { if (name && value) { - GtkType type = GTK_OBJECT_TYPE (object); - GtkArgInfo *info; - gchar *result; + GParamSpec *paramspec; - result = gtk_object_arg_get_info (type, name, &info); + paramspec = g_object_class_find_property(G_OBJECT_GET_CLASS(object),name); - if (result) { - g_print("gstutil: %s\n", result); - } - else if (info->arg_flags & GTK_ARG_WRITABLE) { - switch (info->type) { - case GTK_TYPE_STRING: - gtk_object_set (GTK_OBJECT (object), name, value, NULL); + if (paramspec->flags & G_PARAM_WRITABLE) { + switch (paramspec->value_type) { + case G_TYPE_STRING: + g_object_set (G_OBJECT (object), name, value, NULL); break; - case GTK_TYPE_ENUM: - case GTK_TYPE_INT: { + case G_TYPE_ENUM: + case G_TYPE_INT: { gint i; sscanf (value, "%d", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_LONG: { + case G_TYPE_LONG: { glong i; sscanf (value, "%ld", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_ULONG: { + case G_TYPE_ULONG: { gulong i; sscanf (value, "%lu", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_BOOL: { + case G_TYPE_BOOLEAN: { gboolean i = FALSE; if (!strncmp ("true", value, 4)) i = TRUE; - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_CHAR: { + case G_TYPE_CHAR: { gchar i; sscanf (value, "%c", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_UCHAR: { + case G_TYPE_UCHAR: { guchar i; sscanf (value, "%c", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_FLOAT: { + case G_TYPE_FLOAT: { gfloat i; sscanf (value, "%f", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); break; } - case GTK_TYPE_DOUBLE: { + case G_TYPE_DOUBLE: { gfloat i; sscanf (value, "%g", &i); - gtk_object_set (GTK_OBJECT (object), name, (gdouble)i, NULL); + g_object_set (G_OBJECT (object), name, (gdouble)i, NULL); break; } default: - if (GTK_FUNDAMENTAL_TYPE(info->type) == GTK_TYPE_ENUM) { + if (G_IS_PARAM_SPEC_ENUM(paramspec)) { gint i; sscanf (value, "%d", &i); - gtk_object_set (GTK_OBJECT (object), name, i, NULL); + g_object_set (G_OBJECT (object), name, i, NULL); } - else if (info->type == GST_TYPE_FILENAME) { - gtk_object_set (GTK_OBJECT (object), name, value, NULL); + else if (paramspec->value_type == GST_TYPE_FILENAME) { + g_object_set (G_OBJECT (object), name, value, NULL); } break; } diff --git a/gst/gstutils.h b/gst/gstutils.h index b57f86613b..85290d8c17 100644 --- a/gst/gstutils.h +++ b/gst/gstutils.h @@ -24,22 +24,22 @@ #ifndef __GST_UTILS_H__ #define __GST_UTILS_H__ -#include +#include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -gint gst_util_get_int_arg (GtkObject *object, guchar *argname); -gboolean gst_util_get_bool_arg (GtkObject *object, guchar *argname); -glong gst_util_get_long_arg (GtkObject *object, guchar *argname); -gfloat gst_util_get_float_arg (GtkObject *object, guchar *argname); -gdouble gst_util_get_double_arg (GtkObject *object, guchar *argname); -guchar* gst_util_get_string_arg (GtkObject *object, guchar *argname); -gpointer gst_util_get_pointer_arg (GtkObject *object, guchar *argname); -GtkWidget* gst_util_get_widget_arg (GtkObject *object, guchar *argname); +gint gst_util_get_int_arg (GObject *object, gchar *argname); +gboolean gst_util_get_bool_arg (GObject *object, gchar *argname); +glong gst_util_get_long_arg (GObject *object, gchar *argname); +gfloat gst_util_get_float_arg (GObject *object, gchar *argname); +gdouble gst_util_get_double_arg (GObject *object, gchar *argname); +gchar* gst_util_get_string_arg (GObject *object, gchar *argname); +gpointer gst_util_get_pointer_arg (GObject *object, gchar *argname); +//GtkWidget* gst_util_get_widget_property (GObject *object, gchar *argname); -void gst_util_set_object_arg (GtkObject *object, guchar *name, gchar *value); +void gst_util_set_object_arg (GObject *object, gchar *name, gchar *value); void gst_util_dump_mem (guchar *mem, guint size); diff --git a/gst/gstxml.c b/gst/gstxml.c index 28f67c9f08..c7c258b74c 100644 --- a/gst/gstxml.c +++ b/gst/gstxml.c @@ -38,23 +38,24 @@ static void gst_xml_object_loaded (GstObject *private, GstObject *object, xmlNo static GstObjectClass *parent_class = NULL; static guint gst_xml_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_xml_get_type(void) { - static GtkType xml_type = 0; + static GType xml_type = 0; if (!xml_type) { - static const GtkTypeInfo xml_info = { - "GstXML", - sizeof(GstXML), + static const GTypeInfo xml_info = { sizeof(GstXMLClass), - (GtkClassInitFunc)gst_xml_class_init, - (GtkObjectInitFunc)gst_xml_init, - (GtkArgSetFunc)NULL, - (GtkArgGetFunc)NULL, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_xml_class_init, + NULL, + NULL, + sizeof(GstXML), + 0, + (GInstanceInitFunc)gst_xml_init, }; - xml_type = gtk_type_unique (GST_TYPE_OBJECT, &xml_info); + xml_type = g_type_register_static (GST_TYPE_OBJECT, "GstXml", &xml_info, 0); } return xml_type; } @@ -62,19 +63,18 @@ gst_xml_get_type(void) static void gst_xml_class_init (GstXMLClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; - gtkobject_class = (GtkObjectClass *)klass; + gobject_class = (GObjectClass *)klass; - parent_class = gtk_type_class (GST_TYPE_OBJECT); + parent_class = g_type_class_ref (GST_TYPE_OBJECT); gst_xml_signals[OBJECT_LOADED] = - gtk_signal_new ("object_loaded", GTK_RUN_LAST, gtkobject_class->type, - GTK_SIGNAL_OFFSET (GstXMLClass, object_loaded), - gtk_marshal_NONE__POINTER_POINTER, GTK_TYPE_NONE, 2, - GST_TYPE_OBJECT, GTK_TYPE_POINTER); + g_signal_newc ("object_loaded", G_OBJECT_TYPE(gobject_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstXMLClass, object_loaded), NULL, NULL, + gst_marshal_VOID__OBJECT_POINTER, G_TYPE_NONE, 2, + GST_TYPE_OBJECT, G_TYPE_POINTER); - gtk_object_class_add_signals (gtkobject_class, gst_xml_signals, LAST_SIGNAL); } static void @@ -93,7 +93,7 @@ gst_xml_init(GstXML *xml) GstXML* gst_xml_new (void) { - return GST_XML (gtk_type_new (GST_TYPE_XML)); + return GST_XML (g_object_new(GST_TYPE_XML,NULL)); } /** @@ -156,7 +156,7 @@ gst_xml_parse_doc (GstXML *xml, xmlDocPtr doc, const guchar *root) return FALSE; } - gst_class_signal_connect (GST_OBJECT_CLASS (GTK_OBJECT (xml)->klass), + gst_class_signal_connect (GST_OBJECT_CLASS (G_OBJECT_GET_CLASS(xml)), "object_loaded", gst_xml_object_loaded, xml); xml->ns = ns; @@ -240,7 +240,7 @@ gst_xml_object_loaded (GstObject *private, GstObject *object, xmlNodePtr self, g GstXML *xml = GST_XML (data); // FIXME check that this element was created from the same xmlDocPtr... - gtk_signal_emit (GTK_OBJECT (xml), gst_xml_signals[OBJECT_LOADED], object, self); + g_signal_emit (G_OBJECT (xml), gst_xml_signals[OBJECT_LOADED], 0, object, self); } /** diff --git a/gst/gstxml.h b/gst/gstxml.h index cbc88697a4..35528cea9b 100644 --- a/gst/gstxml.h +++ b/gst/gstxml.h @@ -41,13 +41,13 @@ extern "C" { #define GST_TYPE_XML \ (gst_xml_get_type()) #define GST_XML(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_XML,GstXML)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_XML,GstXML)) #define GST_XML_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_XML,GstXMLClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_XML,GstXMLClass)) #define GST_IS_XML(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_XML)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_XML)) #define GST_IS_XML_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_XML)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_XML)) typedef struct _GstXML GstXML; typedef struct _GstXMLClass GstXMLClass; @@ -68,7 +68,7 @@ struct _GstXMLClass { void (*object_saved) (GstXML *xml, GstObject *object, xmlNodePtr self); }; -GtkType gst_xml_get_type (void); +GType gst_xml_get_type (void); /* create an XML document out of a pipeline */ diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c index 944b9debed..7daa193e62 100644 --- a/plugins/elements/gstqueue.c +++ b/plugins/elements/gstqueue.c @@ -70,8 +70,8 @@ enum { static void gst_queue_class_init (GstQueueClass *klass); static void gst_queue_init (GstQueue *queue); -static void gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id); -static void gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id); +static void gst_queue_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); +static void gst_queue_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static gboolean gst_queue_handle_eos (GstPad *pad); static GstPadNegotiateReturn gst_queue_handle_negotiate_src (GstPad *pad, GstCaps **caps, gpointer *data); @@ -85,17 +85,17 @@ static void gst_queue_flush (GstQueue *queue); static GstElementStateReturn gst_queue_change_state (GstElement *element); -static GtkType +static GType queue_leaky_get_type(void) { - static GtkType queue_leaky_type = 0; - static GtkEnumValue queue_leaky[] = { + static GType queue_leaky_type = 0; + static GEnumValue queue_leaky[] = { { GST_QUEUE_NO_LEAK, "0", "Not Leaky" }, { GST_QUEUE_LEAK_UPSTREAM, "1", "Leaky on Upstream" }, { GST_QUEUE_LEAK_DOWNSTREAM, "2", "Leaky on Downstream" }, { 0, NULL, NULL }, }; if (!queue_leaky_type) { - queue_leaky_type = gtk_type_register_enum("GstQueueLeaky", queue_leaky); + queue_leaky_type = g_enum_register_static("GstQueueLeaky", queue_leaky); } return queue_leaky_type; } @@ -105,22 +105,23 @@ queue_leaky_get_type(void) { static GstElementClass *parent_class = NULL; //static guint gst_queue_signals[LAST_SIGNAL] = { 0 }; -GtkType +GType gst_queue_get_type(void) { - static GtkType queue_type = 0; + static GType queue_type = 0; if (!queue_type) { - static const GtkTypeInfo queue_info = { - "GstQueue", - sizeof(GstQueue), + static const GTypeInfo queue_info = { sizeof(GstQueueClass), - (GtkClassInitFunc)gst_queue_class_init, - (GtkObjectInitFunc)gst_queue_init, - (GtkArgSetFunc)gst_queue_set_arg, - (GtkArgGetFunc)gst_queue_get_arg, - (GtkClassInitFunc)NULL, + NULL, + NULL, + (GClassInitFunc)gst_queue_class_init, + NULL, + NULL, + sizeof(GstQueue), + 4, + (GInstanceInitFunc)gst_queue_init, }; - queue_type = gtk_type_unique (GST_TYPE_ELEMENT, &queue_info); + queue_type = g_type_register_static (GST_TYPE_ELEMENT, "GstQueue", &queue_info, 0); } return queue_type; } @@ -128,23 +129,34 @@ gst_queue_get_type(void) { static void gst_queue_class_init (GstQueueClass *klass) { - GtkObjectClass *gtkobject_class; + GObjectClass *gobject_class; GstElementClass *gstelement_class; - gtkobject_class = (GtkObjectClass*)klass; + gobject_class = (GObjectClass*)klass; gstelement_class = (GstElementClass*)klass; - parent_class = gtk_type_class (GST_TYPE_ELEMENT); + parent_class = g_type_class_ref (GST_TYPE_ELEMENT); +/* gtk_object_add_arg_type ("GstQueue::leaky", GST_TYPE_QUEUE_LEAKY, GTK_ARG_READWRITE, ARG_LEAKY); - gtk_object_add_arg_type ("GstQueue::level", GTK_TYPE_INT, + gtk_object_add_arg_type ("GstQueue::level", G_TYPE_INT, GTK_ARG_READABLE, ARG_LEVEL); - gtk_object_add_arg_type ("GstQueue::max_level", GTK_TYPE_INT, + gtk_object_add_arg_type ("GstQueue::max_level", G_TYPE_INT, GTK_ARG_READWRITE, ARG_MAX_LEVEL); +*/ + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LEAKY, + g_param_spec_enum("leaky","Leaky","Where the queue leaks, if at all.", + GST_TYPE_QUEUE_LEAKY,GST_QUEUE_NO_LEAK,G_PARAM_READWRITE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LEVEL, + g_param_spec_int("level","Level","How many buffers are in the queue.", + 0,G_MAXINT,0,G_PARAM_READABLE)); + g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MAX_LEVEL, + g_param_spec_int("max_level","Maximum Level","How many buffers the queue holds.", + 0,G_MAXINT,100,G_PARAM_READWRITE)); - gtkobject_class->set_arg = gst_queue_set_arg; - gtkobject_class->get_arg = gst_queue_get_arg; + gobject_class->set_property = gst_queue_set_property; + gobject_class->get_property = gst_queue_get_property; gstelement_class->change_state = gst_queue_change_state; } @@ -306,16 +318,16 @@ gst_queue_chain (GstPad *pad, GstBuffer *buf) while (queue->level_buffers >= queue->size_buffers) { // if there's a pending state change for this queue or its manager, switch // back to iterator so bottom half of state change executes - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING || -// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING || +// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) GST_STATE_PENDING(GST_SCHED_PARENT(GST_ELEMENT_SCHED(GST_PAD_PARENT(GST_PAD_PEER(queue->sinkpad))))) != -GST_STATE_NONE_PENDING) +GST_STATE_VOID_PENDING) { GST_DEBUG(GST_CAT_DATAFLOW,"interrupted!!\n"); - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING)\n"); - if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING\n"); + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING)\n"); + if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING\n"); GST_UNLOCK(queue); cothread_switch(cothread_current_main()); } @@ -376,16 +388,16 @@ gst_queue_get (GstPad *pad) // if there's a pending state change for this queue or its manager, switch // back to iterator so bottom half of state change executes - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING || -// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING || +// GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) GST_STATE_PENDING(GST_SCHED_PARENT(GST_ELEMENT_SCHED(GST_PAD_PARENT(GST_PAD_PEER(queue->srcpad))))) != -GST_STATE_NONE_PENDING) +GST_STATE_VOID_PENDING) { GST_DEBUG(GST_CAT_DATAFLOW,"interrupted!!\n"); - if (GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_NONE_PENDING)\n"); - if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING) - GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_NONE_PENDING\n"); + if (GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(queue) != GST_STATE_VOID_PENDING)\n"); + if (GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING) + GST_DEBUG(GST_CAT_DATAFLOW,"GST_STATE_PENDING(GST_SCHEDULE(GST_ELEMENT(queue)->sched)->parent) != GST_STATE_VOID_PENDING\n"); GST_UNLOCK(queue); cothread_switch(cothread_current_main()); } @@ -435,11 +447,12 @@ gst_queue_change_state (GstElement *element) gst_queue_flush (queue); } - /* if we haven't failed already, give the parent class a chance to ;-) */ +/* FIXME FIXME FIXME FIXME FIXME!!!! + // if we haven't failed already, give the parent class a chance to ;-) if (GST_ELEMENT_CLASS (parent_class)->change_state) { gboolean valid_handler = FALSE; - guint state_change_id = gtk_signal_lookup("state_change", GTK_OBJECT_TYPE(element)); + guint state_change_id = gtk_signal_lookup("state_change", G_OBJECT_TYPE(element)); // determine whether we need to block the parent (element) class' // STATE_CHANGE signal so we can UNLOCK before returning. we block @@ -450,22 +463,23 @@ gst_queue_change_state (GstElement *element) // if element change_state() emits other signals, they need to be blocked // as well. if (state_change_id && - gtk_signal_handler_pending(GTK_OBJECT(element), state_change_id, FALSE)) + gtk_signal_handler_pending(G_OBJECT(element), state_change_id, FALSE)) valid_handler = TRUE; if (valid_handler) - gtk_signal_handler_block(GTK_OBJECT(element), state_change_id); + gtk_signal_handler_block(G_OBJECT(element), state_change_id); ret = GST_ELEMENT_CLASS (parent_class)->change_state (element); if (valid_handler) - gtk_signal_handler_unblock(GTK_OBJECT(element), state_change_id); + gtk_signal_handler_unblock(G_OBJECT(element), state_change_id); // UNLOCK, *then* emit signal (if there's one there) GST_UNLOCK(queue); if (valid_handler) - gtk_signal_emit(GTK_OBJECT (element), state_change_id, GST_STATE(element)); + gtk_signal_emit(G_OBJECT (element), state_change_id, GST_STATE(element)); } else +*/ { ret = GST_STATE_SUCCESS; GST_UNLOCK(queue); @@ -476,7 +490,7 @@ gst_queue_change_state (GstElement *element) static void -gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id) +gst_queue_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstQueue *queue; @@ -485,20 +499,21 @@ gst_queue_set_arg (GtkObject *object, GtkArg *arg, guint id) queue = GST_QUEUE (object); - switch(id) { + switch (prop_id) { case ARG_LEAKY: - queue->leaky = GTK_VALUE_INT (*arg); + queue->leaky = g_value_get_int(value); break; case ARG_MAX_LEVEL: - queue->size_buffers = GTK_VALUE_INT (*arg); + queue->size_buffers = g_value_get_int(value); break; default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void -gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id) +gst_queue_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstQueue *queue; @@ -507,18 +522,18 @@ gst_queue_get_arg (GtkObject *object, GtkArg *arg, guint id) queue = GST_QUEUE (object); - switch (id) { + switch (prop_id) { case ARG_LEAKY: - GTK_VALUE_INT (*arg) = queue->leaky; + g_value_set_int(value, queue->leaky); break; case ARG_LEVEL: - GTK_VALUE_INT (*arg) = queue->level_buffers; + g_value_set_int(value, queue->level_buffers); break; case ARG_MAX_LEVEL: - GTK_VALUE_INT (*arg) = queue->size_buffers; + g_value_set_int(value, queue->size_buffers); break; default: - arg->type = GTK_TYPE_INVALID; + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } diff --git a/plugins/elements/gstqueue.h b/plugins/elements/gstqueue.h index 085d5ac122..02b73f2d0a 100644 --- a/plugins/elements/gstqueue.h +++ b/plugins/elements/gstqueue.h @@ -39,13 +39,13 @@ GstElementDetails gst_queue_details; #define GST_TYPE_QUEUE \ (gst_queue_get_type()) #define GST_QUEUE(obj) \ - (GTK_CHECK_CAST((obj),GST_TYPE_QUEUE,GstQueue)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_QUEUE,GstQueue)) #define GST_QUEUE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass)) #define GST_IS_QUEUE(obj) \ - (GTK_CHECK_TYPE((obj),GST_TYPE_QUEUE)) + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QUEUE)) #define GST_IS_QUEUE_CLASS(obj) \ - (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE)) + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE)) enum { GST_QUEUE_NO_LEAK = 0, @@ -90,7 +90,7 @@ struct _GstQueueClass { void (*high_watermark) (GstQueue *queue, gint level); }; -GtkType gst_queue_get_type (void); +GType gst_queue_get_type (void); #ifdef __cplusplus }