decodebin3: fix stream leaks

MultiQueueSlot owns a ref on the active stream so it should release it
when being freed.

DecodebinInputStream owns ref on the active and pending stream so they
should be dropped when being freed.

https://bugzilla.gnome.org/show_bug.cgi?id=768811
This commit is contained in:
Guillaume Desmottes 2016-07-14 10:34:30 +02:00 committed by Tim-Philipp Müller
parent e2263673d1
commit c1db195ba5
2 changed files with 6 additions and 0 deletions

View file

@ -360,6 +360,11 @@ remove_input_stream (GstDecodebin3 * dbin, DecodebinInputStream * stream)
GST_DEBUG_OBJECT (dbin, "slot %p cleared", slot);
}
if (stream->active_stream)
gst_object_unref (stream->active_stream);
if (stream->pending_stream)
gst_object_unref (stream->pending_stream);
dbin->input_streams = g_list_remove (dbin->input_streams, stream);
g_free (stream);

View file

@ -2312,6 +2312,7 @@ free_multiqueue_slot (GstDecodebin3 * dbin, MultiQueueSlot * slot)
gst_element_release_request_pad (dbin->multiqueue, slot->sink_pad);
gst_object_replace ((GstObject **) & slot->sink_pad, NULL);
gst_object_replace ((GstObject **) & slot->src_pad, NULL);
gst_object_replace ((GstObject **) & slot->active_stream, NULL);
g_free (slot);
}