From ee303c441d2da5520d7e8d7d8798d185ec8d63cf Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Tue, 26 Oct 2010 16:41:28 +0100 Subject: [PATCH] playsink: Fix subpicture overlay when deinterlacing disabled. Fix a bug when reconfiguring the playsink where the subpicture stream is broken by attempting to connect it through streamsynchroniser and second time. --- gst/playback/gstplaysink.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 443ac432e5..80374f6960 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -2489,21 +2489,23 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) NULL); add_chain (GST_PLAY_CHAIN (playsink->textchain), TRUE); - playsink->text_sinkpad_stream_synchronizer = - gst_element_get_request_pad (GST_ELEMENT_CAST - (playsink->stream_synchronizer), "sink_%d"); - it = gst_pad_iterate_internal_links - (playsink->text_sinkpad_stream_synchronizer); - g_assert (it); - gst_iterator_next (it, - (gpointer *) & playsink->text_srcpad_stream_synchronizer); - g_assert (playsink->text_srcpad_stream_synchronizer); - gst_iterator_free (it); + if (!playsink->text_sinkpad_stream_synchronizer) { + playsink->text_sinkpad_stream_synchronizer = + gst_element_get_request_pad (GST_ELEMENT_CAST + (playsink->stream_synchronizer), "sink_%d"); + it = gst_pad_iterate_internal_links + (playsink->text_sinkpad_stream_synchronizer); + g_assert (it); + gst_iterator_next (it, + (gpointer *) & playsink->text_srcpad_stream_synchronizer); + g_assert (playsink->text_srcpad_stream_synchronizer); + gst_iterator_free (it); - gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->text_pad), - playsink->text_sinkpad_stream_synchronizer); - gst_pad_link_full (playsink->text_srcpad_stream_synchronizer, - playsink->textchain->textsinkpad, GST_PAD_LINK_CHECK_NOTHING); + gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->text_pad), + playsink->text_sinkpad_stream_synchronizer); + gst_pad_link_full (playsink->text_srcpad_stream_synchronizer, + playsink->textchain->textsinkpad, GST_PAD_LINK_CHECK_NOTHING); + } if (need_vis) { GstPad *srcpad;