mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-15 22:01:27 +00:00
pad: consider PROBE_TYPE_EVENT_FLUSH when using PROBE_TYPE_ALL_BOTH
When GST_PAD_PROBE_EVENT_FLUSH is used, the probes already have a data type and it is not needed to automatically add the default types. Without this, EVENT_FLUSH probes that didn't specify a data type would be called also for other data such as buffers. https://bugzilla.gnome.org/show_bug.cgi?id=762330
This commit is contained in:
parent
a87289ece2
commit
e6dd8d85c0
1 changed files with 4 additions and 2 deletions
|
@ -123,6 +123,8 @@ enum
|
|||
#define GST_PAD_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_PAD, GstPadPrivate))
|
||||
|
||||
#define _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH (GST_PAD_PROBE_TYPE_ALL_BOTH | GST_PAD_PROBE_TYPE_EVENT_FLUSH)
|
||||
|
||||
/* we have a pending and an active event on the pad. On source pads only the
|
||||
* active event is used. On sinkpads, events are copied to the pending entry and
|
||||
* moved to the active event when the eventfunc returned %TRUE. */
|
||||
|
@ -1380,7 +1382,7 @@ gst_pad_add_probe (GstPad * pad, GstPadProbeType mask,
|
|||
|
||||
/* when no contraints are given for the types, assume all types are
|
||||
* acceptable */
|
||||
if ((mask & GST_PAD_PROBE_TYPE_ALL_BOTH) == 0)
|
||||
if ((mask & _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH) == 0)
|
||||
mask |= GST_PAD_PROBE_TYPE_ALL_BOTH;
|
||||
if ((mask & GST_PAD_PROBE_TYPE_SCHEDULING) == 0)
|
||||
mask |= GST_PAD_PROBE_TYPE_SCHEDULING;
|
||||
|
@ -3408,7 +3410,7 @@ probe_hook_marshal (GHook * hook, ProbeMarshall * data)
|
|||
|
||||
/* one of the data types for non-idle probes */
|
||||
if ((type & GST_PAD_PROBE_TYPE_IDLE) == 0
|
||||
&& (flags & GST_PAD_PROBE_TYPE_ALL_BOTH & type) == 0)
|
||||
&& (flags & _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH & type) == 0)
|
||||
goto no_match;
|
||||
/* one of the scheduling types */
|
||||
if ((flags & GST_PAD_PROBE_TYPE_SCHEDULING & type) == 0)
|
||||
|
|
Loading…
Reference in a new issue