summaryrefslogtreecommitdiff
path: root/gst/playback/gstdecodebin3.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2016-07-29 11:38:44 +0200
committerEdward Hervey <bilboed@bilboed.com>2016-08-03 17:37:30 +0200
commit500e4117bbea52e8936632a7e284d5bc2eddfe6c (patch)
treefc931f50b77dd2bf2d6f7d62cfd0e80acf18a163 /gst/playback/gstdecodebin3.c
parent9adaeb0a7118b36dcf2a4ce6d240df8d447641dd (diff)
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
Diffstat (limited to 'gst/playback/gstdecodebin3.c')
-rw-r--r--gst/playback/gstdecodebin3.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c
index ba17acf4a..9a480a3ef 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