summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2009-11-01 11:24:40 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-11-01 11:24:40 +0100
commit15229ab6697a40357679c0ff31efe1b2b147b12b (patch)
treea94f8fecd6d1894efd476e54b44072a1e6682d8f
parent28493b04ec9a064356c49af048c9b924c94cdfde (diff)
ghostpad: Implement iterate internal links
The internally linked pad of the ghost pad is its proxy pad, which is the pad that is linked to the ghost pads target.
-rw-r--r--gst/gstghostpad.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/gstghostpad.c b/gst/gstghostpad.c
index b5a62996e9..2eb1a0f24e 100644
--- a/gst/gstghostpad.c
+++ b/gst/gstghostpad.c
@@ -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