[gst-devel] Change to "have_type" signal...

Ronald Bultje rbultje at ronald.bitfreak.net
Sun May 25 23:17:02 CEST 2003

Hey Brett,

On Mon, 2003-05-26 at 02:11, Brett Kosinski wrote:
> The "have_type" signal in gsttypefind.c has its first argument defined as
> G_TYPE_POINTER.  For the wrappers I'm creating, this isn't specific enough
> (since the callback code can't know how to marshall the parameter).  I
> believe the type should be set to GST_TYPE_CAPS (since that's what's
> passed).  Are there any arguments against this change?  I can provide a
> patch (I didn't since the change is VERY simple).

gsttypefind.h has a bug here too, btw:

  void                  (*have_type)    (GstElement *element);

That should have a GstCaps *caps as second argument, of course.

Concerning your change, most source files actually use G_TYPE_OBJECT
since GstCaps is a derivative of it. GST_TYPE_CAPS isn't a base type in

I've applied the following patch (to CVS/HEAD):

Index: gsttypefind.c
RCS file: /cvsroot/gstreamer/gstreamer/gst/gsttypefind.c,v
retrieving revision 1.30
diff -u -r1.30 gsttypefind.c
--- gsttypefind.c       13 Apr 2003 00:55:08 -0000      1.30
+++ gsttypefind.c       26 May 2003 06:04:52 -0000
@@ -116,7 +116,7 @@
       g_signal_new ("have_type", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
                      G_STRUCT_OFFSET (GstTypeFindClass, have_type), NULL, NULL,
                      g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1,
-                     G_TYPE_POINTER);
+                     G_TYPE_OBJECT);
   gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_type_find_set_property);
   gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_type_find_get_property);
Index: gsttypefind.h
RCS file: /cvsroot/gstreamer/gstreamer/gst/gsttypefind.h,v
retrieving revision 1.11
diff -u -r1.11 gsttypefind.h
--- gsttypefind.h       17 Jan 2003 20:41:04 -0000      1.11
+++ gsttypefind.h       26 May 2003 06:04:52 -0000
@@ -57,7 +57,8 @@
   GstElementClass      parent_class;
   /* signals */
-  void                         (*have_type)    (GstElement *element);
+  void                         (*have_type)    (GstElement *element,
+                                        GstCaps    *caps);
 GType gst_type_find_get_type (void);

That should be enough.

Thanks for reporting,


oh, one more thing, we normally use bugzilla
(http://bugzilla.gnome.org/) for bug reporting like this, you might want
to have a look at that too.

Ronald Bultje <rbultje at ronald.bitfreak.net>

More information about the gstreamer-devel mailing list