From 0324358ebc8122a41ab499a3ef7973b61c3e621b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 30 Dec 2013 18:44:24 +0100 Subject: [PATCH] pad: Only call IDLE probes if we are actually idle Also only check the data types for non-IDLE probes. When we are idle, we have no data type obviously. Previously we were calling IDLE probes during data flow whenever a non-blocking probe would be called. The pad was usually not idle at that time. --- gst/gstpad.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gst/gstpad.c b/gst/gstpad.c index 77bea63fd6..6093138d03 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -3061,8 +3061,9 @@ probe_hook_marshal (GHook * hook, ProbeMarshall * data) flags = hook->flags >> G_HOOK_FLAG_USER_SHIFT; type = info->type; - /* one of the data types */ - if ((flags & GST_PAD_PROBE_TYPE_ALL_BOTH & type) == 0) + /* 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) goto no_match; /* one of the scheduling types */ if ((flags & GST_PAD_PROBE_TYPE_SCHEDULING & type) == 0) @@ -3071,6 +3072,9 @@ probe_hook_marshal (GHook * hook, ProbeMarshall * data) if ((type & GST_PAD_PROBE_TYPE_BLOCKING) && (flags & GST_PAD_PROBE_TYPE_BLOCKING & type) == 0) goto no_match; + if ((type & GST_PAD_PROBE_TYPE_BLOCKING) == 0 && + (flags & GST_PAD_PROBE_TYPE_BLOCKING)) + goto no_match; /* only probes that have GST_PAD_PROBE_TYPE_EVENT_FLUSH set */ if ((type & GST_PAD_PROBE_TYPE_EVENT_FLUSH) && (flags & GST_PAD_PROBE_TYPE_EVENT_FLUSH & type) == 0)