ghostpad: Only implement the iterate_internal_links function on proxypads
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 6 May 2011 13:25:04 +0000 (15:25 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 14 May 2011 09:39:34 +0000 (11:39 +0200)
ghostpads inherit it from their parent class. Also make it threadsafe.

gst/gstghostpad.c

index 0a62052..b50d8af 100644 (file)
@@ -136,12 +136,16 @@ static GstIterator *
 gst_proxy_pad_do_iterate_internal_links (GstPad * pad)
 {
   GstIterator *res = NULL;
-  GstPad *internal = GST_PROXY_PAD_INTERNAL (pad);
+  GstPad *internal;
+
+  internal =
+      GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
 
   if (internal) {
     res =
         gst_iterator_new_single (GST_TYPE_PAD, internal,
         (GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
+    gst_object_unref (internal);
   }
 
   return res;
@@ -816,21 +820,6 @@ gst_ghost_pad_do_setcaps (GstPad * pad, GstCaps * caps)
   return gst_proxy_pad_do_setcaps (pad, caps);
 }
 
-static GstIterator *
-gst_ghost_pad_do_iterate_internal_links (GstPad * pad)
-{
-  GstIterator *res = NULL;
-  GstPad *internal = GST_PROXY_PAD_INTERNAL (GST_GHOST_PAD_CAST (pad));
-
-  if (internal) {
-    res =
-        gst_iterator_new_single (GST_TYPE_PAD, internal,
-        (GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
-  }
-
-  return res;
-}
-
 static void
 gst_ghost_pad_class_init (GstGhostPadClass * klass)
 {
@@ -859,8 +848,6 @@ gst_ghost_pad_init (GstGhostPad * pad)
       gst_ghost_pad_do_activate_pull);
   gst_pad_set_activatepush_function (GST_PAD_CAST (pad),
       gst_ghost_pad_do_activate_push);
-  gst_pad_set_iterate_internal_links_function (GST_PAD_CAST (pad),
-      gst_ghost_pad_do_iterate_internal_links);
 }
 
 static void