decodebin3: Free main input even if it is not part of the list of inputs
authorSebastian Dröge <sebastian@centricular.com>
Fri, 27 Dec 2024 12:27:54 +0000 (14:27 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 2 Jan 2025 14:30:02 +0000 (14:30 +0000)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8216>

subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c

index 399a29523c8ea84d80a7c8c24fc9b9f1262d6eab..87491cc0b04e59cb9a0e4814d8c73ea47f7b3a38 100644 (file)
@@ -794,8 +794,17 @@ gst_decodebin3_dispose (GObject * object)
   g_mutex_unlock (&dbin->factories_lock);
 
   INPUT_LOCK (dbin);
-  g_list_free_full (dbin->inputs, (GDestroyNotify) gst_decodebin_input_free);
+  while (dbin->inputs) {
+    DecodebinInput *input = dbin->inputs->data;
+    if (input->is_main)
+      dbin->main_input = NULL;
+    gst_decodebin_input_free (input);
+
+    dbin->inputs = g_list_delete_link (dbin->inputs, dbin->inputs);
+  }
   dbin->inputs = NULL;
+  if (dbin->main_input)
+    gst_decodebin_input_free (dbin->main_input);
   dbin->main_input = NULL;
   INPUT_UNLOCK (dbin);