mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
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.
This commit is contained in:
parent
dcacfb17cb
commit
8f282de37d
1 changed files with 8 additions and 0 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue