From b3a15872b7b781d4cae0e2f9d4cd1da9beda1e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 2 Jul 2013 14:18:20 +0200 Subject: [PATCH] playsink: If we switch sinks, make sure that the old sink is set to NULL --- gst/playback/gstplaysink.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 79e0511f07..cc79c6745c 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -3068,9 +3068,12 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink) /* Remove the sink from the bin to keep its state * and unparent it to allow reuse */ - if (playsink->videochain->sink) + if (playsink->videochain->sink) { + if (playsink->videochain->sink != playsink->video_sink) + gst_element_set_state (playsink->videochain->sink, GST_STATE_NULL); gst_bin_remove (GST_BIN_CAST (playsink->videochain->chain.bin), playsink->videochain->sink); + } activate_chain (GST_PLAY_CHAIN (playsink->videochain), FALSE); free_chain ((GstPlayChain *) playsink->videochain); @@ -3260,9 +3263,12 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink) /* Remove the sink from the bin to keep its state * and unparent it to allow reuse */ - if (playsink->audiochain->sink) + if (playsink->audiochain->sink) { + if (playsink->audiochain->sink != playsink->audio_sink) + gst_element_set_state (playsink->audiochain->sink, GST_STATE_NULL); gst_bin_remove (GST_BIN_CAST (playsink->audiochain->chain.bin), playsink->audiochain->sink); + } activate_chain (GST_PLAY_CHAIN (playsink->audiochain), FALSE); disconnect_audio_chain (playsink->audiochain, playsink);