ghostpad: Implement iterate internal links
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 1 Nov 2009 10:24:40 +0000 (11:24 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sun, 1 Nov 2009 10:24:40 +0000 (11:24 +0100)
The internally linked pad of the ghost pad is its
proxy pad, which is the pad that is linked to the ghost
pads target.

gst/gstghostpad.c

index b5a6299..2eb1a0f 100644 (file)
@@ -763,6 +763,21 @@ 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_init (GstGhostPad * pad)
 {
@@ -775,6 +790,8 @@ gst_ghost_pad_init (GstGhostPad * pad)
       GST_DEBUG_FUNCPTR (gst_ghost_pad_do_activate_pull));
   gst_pad_set_activatepush_function (GST_PAD_CAST (pad),
       GST_DEBUG_FUNCPTR (gst_ghost_pad_do_activate_push));
+  gst_pad_set_iterate_internal_links_function (GST_PAD_CAST (pad),
+      GST_DEBUG_FUNCPTR (gst_ghost_pad_do_iterate_internal_links));
 }
 
 static void