From 828a4627db0cb6a6706b96d9be97e5e5c7d22215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 12 Apr 2016 15:11:30 +0300 Subject: [PATCH] basesink: Take PREROLL_LOCK in wait_event() It is calling do_sync(), which requires the STREAM_LOCK and PREROLL_LOCK to be taken. The STREAM_LOCK is already taken in all callers, the PREROLL_LOCK not. https://bugzilla.gnome.org/show_bug.cgi?id=764939 --- libs/gst/base/gstbasesink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index acd5c057a3..79c49a1374 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -3038,10 +3038,12 @@ gst_base_sink_wait_event (GstBaseSink * basesink, GstEvent * event) bclass = GST_BASE_SINK_GET_CLASS (basesink); + GST_BASE_SINK_PREROLL_LOCK (basesink); if (G_LIKELY (bclass->wait_event)) ret = bclass->wait_event (basesink, event); else ret = GST_FLOW_NOT_SUPPORTED; + GST_BASE_SINK_PREROLL_UNLOCK (basesink); return ret; }