From 0f5997e4d100f617421f85b0a4069a5c5080fc6b Mon Sep 17 00:00:00 2001 From: Erlend Eriksen Date: Mon, 1 Nov 2021 16:32:10 +0100 Subject: qtmux: Fix deadlock in gst_qt_mux_prepare_moov_recovery Regression from 5766731bd4200c3a374522a749386f740347661a Part-of: --- gst/isomp4/gstqtmux.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 43b5b40c6..9631b09b3 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -2440,6 +2440,7 @@ gst_qt_mux_downstream_is_seekable (GstQTMux * qtmux) return seekable; } +/* Must be called with object lock */ static void gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) { @@ -2460,21 +2461,17 @@ gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) gst_qt_mux_prepare_ftyp (qtmux, &ftyp, &prefix); - GST_OBJECT_LOCK (qtmux); if (!atoms_recov_write_headers (qtmux->moov_recov_file, ftyp, prefix, qtmux->moov, qtmux->timescale, g_list_length (GST_ELEMENT (qtmux)->sinkpads))) { GST_WARNING_OBJECT (qtmux, "Failed to write moov recovery file " "headers"); - GST_OBJECT_UNLOCK (qtmux); goto fail; } - GST_OBJECT_UNLOCK (qtmux); atom_ftyp_free (ftyp); if (prefix) gst_buffer_unref (prefix); - GST_OBJECT_LOCK (qtmux); for (l = GST_ELEMENT_CAST (qtmux)->sinkpads; l; l = l->next) { GstQTMuxPad *qpad = (GstQTMuxPad *) l->data; /* write info for each stream */ @@ -2485,7 +2482,6 @@ gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) break; } } - GST_OBJECT_UNLOCK (qtmux); return; -- cgit v1.2.1