mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-29 05:01:23 +00:00
decodebin3: protect internal reset with SELECTION_LOCK
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7605>
This commit is contained in:
parent
3b6f6073e4
commit
bb05e78349
1 changed files with 5 additions and 0 deletions
|
@ -760,6 +760,7 @@ gst_decodebin3_reset (GstDecodebin3 * dbin)
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (dbin, "Resetting");
|
GST_DEBUG_OBJECT (dbin, "Resetting");
|
||||||
|
|
||||||
|
SELECTION_LOCK (dbin);
|
||||||
/* Free output streams */
|
/* Free output streams */
|
||||||
g_list_free_full (dbin->output_streams,
|
g_list_free_full (dbin->output_streams,
|
||||||
(GDestroyNotify) db_output_stream_free);
|
(GDestroyNotify) db_output_stream_free);
|
||||||
|
@ -773,6 +774,7 @@ gst_decodebin3_reset (GstDecodebin3 * dbin)
|
||||||
g_list_free (dbin->slots);
|
g_list_free (dbin->slots);
|
||||||
dbin->slots = NULL;
|
dbin->slots = NULL;
|
||||||
dbin->current_group_id = GST_GROUP_ID_INVALID;
|
dbin->current_group_id = GST_GROUP_ID_INVALID;
|
||||||
|
SELECTION_UNLOCK (dbin);
|
||||||
|
|
||||||
/* Reset the inputs */
|
/* Reset the inputs */
|
||||||
gst_decodebin_input_reset (dbin->main_input);
|
gst_decodebin_input_reset (dbin->main_input);
|
||||||
|
@ -783,12 +785,15 @@ gst_decodebin3_reset (GstDecodebin3 * dbin)
|
||||||
/* Reset multiqueue to default interleave */
|
/* Reset multiqueue to default interleave */
|
||||||
g_object_set (dbin->multiqueue, "min-interleave-time",
|
g_object_set (dbin->multiqueue, "min-interleave-time",
|
||||||
dbin->default_mq_min_interleave, NULL);
|
dbin->default_mq_min_interleave, NULL);
|
||||||
|
|
||||||
|
SELECTION_LOCK (dbin);
|
||||||
dbin->current_mq_min_interleave = dbin->default_mq_min_interleave;
|
dbin->current_mq_min_interleave = dbin->default_mq_min_interleave;
|
||||||
dbin->upstream_handles_selection = FALSE;
|
dbin->upstream_handles_selection = FALSE;
|
||||||
|
|
||||||
g_list_free_full (dbin->collections, (GDestroyNotify) db_collection_free);
|
g_list_free_full (dbin->collections, (GDestroyNotify) db_collection_free);
|
||||||
dbin->collections = NULL;
|
dbin->collections = NULL;
|
||||||
dbin->input_collection = dbin->output_collection = NULL;
|
dbin->input_collection = dbin->output_collection = NULL;
|
||||||
|
SELECTION_UNLOCK (dbin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue