mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-21 15:56:42 +00:00
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:
parent
e2263673d1
commit
c1db195ba5
2 changed files with 6 additions and 0 deletions
gst/playback
|
@ -360,6 +360,11 @@ remove_input_stream (GstDecodebin3 * dbin, DecodebinInputStream * stream)
|
||||||
GST_DEBUG_OBJECT (dbin, "slot %p cleared", slot);
|
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);
|
dbin->input_streams = g_list_remove (dbin->input_streams, stream);
|
||||||
|
|
||||||
g_free (stream);
|
g_free (stream);
|
||||||
|
|
|
@ -2312,6 +2312,7 @@ free_multiqueue_slot (GstDecodebin3 * dbin, MultiQueueSlot * slot)
|
||||||
gst_element_release_request_pad (dbin->multiqueue, slot->sink_pad);
|
gst_element_release_request_pad (dbin->multiqueue, slot->sink_pad);
|
||||||
gst_object_replace ((GstObject **) & slot->sink_pad, NULL);
|
gst_object_replace ((GstObject **) & slot->sink_pad, NULL);
|
||||||
gst_object_replace ((GstObject **) & slot->src_pad, NULL);
|
gst_object_replace ((GstObject **) & slot->src_pad, NULL);
|
||||||
|
gst_object_replace ((GstObject **) & slot->active_stream, NULL);
|
||||||
g_free (slot);
|
g_free (slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue