From d61b19acfbe177ce590e4dad1b6341ba45d602a6 Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Mon, 16 Mar 2015 17:32:11 +0100 Subject: [PATCH] gstpad: check if peer pad really received event before marking it so during gst_pad_push_event_unchecked the peer pad might change; If the event gets marked as received now the new peer will never get it --- gst/gstpad.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gst/gstpad.c b/gst/gstpad.c index 4c063fe..c776550 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -3446,9 +3446,15 @@ push_sticky (GstPad * pad, PadEvent * ev, gpointer user_data) switch (data->ret) { case GST_FLOW_OK: - ev->received = TRUE; - GST_DEBUG_OBJECT (pad, "event %s marked received", - GST_EVENT_TYPE_NAME (event)); + if (!pad->peer || find_event (pad->peer, ev->event)) { + ev->received = TRUE; + GST_DEBUG_OBJECT (pad, "event %s marked received", + GST_EVENT_TYPE_NAME (event)); + } else { + GST_DEBUG_OBJECT (pad, + "event %s was received, possibly because pad was relinked in the meanwhile", + GST_EVENT_TYPE_NAME (event)); + } break; case GST_FLOW_CUSTOM_SUCCESS: /* we can't assume the event is received when it was dropped */ -- 1.9.3 (Apple Git-50)