diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-11-01 11:24:40 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-11-01 11:24:40 +0100 |
commit | 15229ab6697a40357679c0ff31efe1b2b147b12b (patch) | |
tree | a94f8fecd6d1894efd476e54b44072a1e6682d8f | |
parent | 28493b04ec9a064356c49af048c9b924c94cdfde (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.c | 17 |
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 |