summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2018-03-07 11:19:25 -0500
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2018-03-07 20:03:56 -0500
commitcbd03e26ce8ac41c77b3b4a9b7f06a54a0311ce8 (patch)
treeab008a5fca5a436c4f3311c6549ec127c6fe79a6
parent12c5d903c9cf80d9365d57b4643fef9f57aa4d60 (diff)
basesrc: Balance unlock/unlock_stop in _src_stop()
Otherwise it's possible that we won't be able to start again depending the implementation. We do start/stop in normal use cases whenever GST_QUERY_SCHEDULING happens before we are started. https://bugzilla.gnome.org/show_bug.cgi?id=794149
-rw-r--r--libs/gst/base/gstbasesrc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index f85f32105..fd046bf41 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -3630,8 +3630,11 @@ gst_base_src_stop (GstBaseSrc * basesrc)
/* flush all */
gst_base_src_set_flushing (basesrc, TRUE);
+
/* stop the task */
gst_pad_stop_task (basesrc->srcpad);
+ /* stop flushing, this will balance unlock/unlock_stop calls */
+ gst_base_src_set_flushing (basesrc, FALSE);
GST_OBJECT_LOCK (basesrc);
if (!GST_BASE_SRC_IS_STARTED (basesrc) && !GST_BASE_SRC_IS_STARTING (basesrc))