diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2018-03-07 11:19:25 -0500 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2018-03-07 20:03:56 -0500 |
commit | cbd03e26ce8ac41c77b3b4a9b7f06a54a0311ce8 (patch) | |
tree | ab008a5fca5a436c4f3311c6549ec127c6fe79a6 | |
parent | 12c5d903c9cf80d9365d57b4643fef9f57aa4d60 (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.c | 3 |
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)) |