From 8f282de37d6640274b44c9fb0fb986fa3f812162 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 30 Aug 2012 19:15:42 +0200 Subject: [PATCH] pad: check sticky events also after pad block Recheck for sticky events after doing a pad block because the pad block could have caused a relink and then we need to resend the events to the newly linked pad. Fixes things like switching of visualisations. --- gst/gstpad.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gst/gstpad.c b/gst/gstpad.c index 1529528..971f84b 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -3811,6 +3811,10 @@ gst_pad_push_data (GstPad * pad, GstPadProbeType type, void *data) /* do block probes */ PROBE_PUSH (pad, type | GST_PAD_PROBE_TYPE_BLOCK, data, probe_stopped); + /* recheck sticky events because the probe might have cause a relink */ + if (G_UNLIKELY ((ret = check_sticky (pad))) != GST_FLOW_OK) + goto events_error; + /* do post-blocking probes */ PROBE_PUSH (pad, type, data, probe_stopped); @@ -3993,6 +3997,10 @@ gst_pad_get_range_unchecked (GstPad * pad, guint64 offset, guint size, PROBE_PULL (pad, GST_PAD_PROBE_TYPE_PULL | GST_PAD_PROBE_TYPE_BLOCK, res_buf, offset, size, probe_stopped); + /* recheck sticky events because the probe might have cause a relink */ + if (G_UNLIKELY ((ret = check_sticky (pad))) != GST_FLOW_OK) + goto events_error; + ACQUIRE_PARENT (pad, parent, no_parent); GST_OBJECT_UNLOCK (pad); -- 2.7.4