From 33c7af8845c9f53c21c0c3f8ca20e26b58346317 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Tue, 29 May 2018 13:03:54 +0200 Subject: [PATCH] webrtcbin: copy sticky events on our ghostpads This lets users call gst_pad_get_current_caps on newly-added pads to easily determine what to plug them into. We cannot copy sticky events unconditionally in core, see #719437 https://bugzilla.gnome.org/show_bug.cgi?id=796387 --- ext/webrtc/gstwebrtcbin.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ext/webrtc/gstwebrtcbin.c b/ext/webrtc/gstwebrtcbin.c index a28b9364d7..233cb99cbd 100644 --- a/ext/webrtc/gstwebrtcbin.c +++ b/ext/webrtc/gstwebrtcbin.c @@ -3289,6 +3289,17 @@ gst_webrtc_bin_get_transceivers (GstWebRTCBin * webrtc) return arr; } +static gboolean +copy_sticky_events (GstPad * pad, GstEvent ** event, gpointer user_data) +{ + GstPad *gpad = GST_PAD_CAST (user_data); + + GST_DEBUG_OBJECT (gpad, "store sticky event %" GST_PTR_FORMAT, *event); + gst_pad_store_sticky_event (gpad, *event); + + return TRUE; +} + /* === rtpbin signal implementations === */ static void @@ -3333,6 +3344,7 @@ on_rtpbin_pad_added (GstElement * rtpbin, GstPad * new_pad, if (webrtc->priv->running) gst_pad_set_active (GST_PAD (pad), TRUE); + gst_pad_sticky_events_foreach (new_pad, copy_sticky_events, pad); gst_element_add_pad (GST_ELEMENT (webrtc), GST_PAD (pad)); _remove_pending_pad (webrtc, pad);