From 500e4117bbea52e8936632a7e284d5bc2eddfe6c Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 29 Jul 2016 11:38:44 +0200 Subject: [PATCH] decodebin3: handle full removal of streams Fix the validate.file.playback.disable_subtitle_track_while_paused.* validate scenarios when using playbin3. https://bugzilla.gnome.org/show_bug.cgi?id=769298 --- gst/playback/gstdecodebin3.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c index ba17acf..9a480a3 100644 --- a/gst/playback/gstdecodebin3.c +++ b/gst/playback/gstdecodebin3.c @@ -2036,10 +2036,15 @@ reassign_slot (GstDecodebin3 * dbin, MultiQueueSlot * slot) (GstPadProbeCallback) idle_reconfigure, target_slot, NULL); /* gst_pad_send_event (target_slot->src_pad, gst_event_new_reconfigure ()); */ } else { + GstMessage *msg; + + dbin->output_streams = g_list_remove (dbin->output_streams, output); + free_output_stream (dbin, output); + msg = is_selection_done (slot->dbin); SELECTION_UNLOCK (dbin); - /* FIXME : Remove output if no longer needed ? The tricky part is knowing - * if it's really no longer needed or not */ - GST_FIXME_OBJECT (slot->src_pad, "Remove unused output stream ?"); + + if (msg) + gst_element_post_message ((GstElement *) slot->dbin, msg); } return TRUE; @@ -2185,6 +2190,8 @@ handle_stream_switch (GstDecodebin3 * dbin, GList * select_streams, GST_DEBUG_OBJECT (dbin, "Really need to deactivate slot %p, but no available alternative", slot); + + slots_to_reassign = g_list_append (slots_to_reassign, slot); } /* The only slots left to activate are the ones that won't be reassigned and -- 2.7.4