playsink: Fix subpicture overlay when deinterlacing disabled.
authorJan Schmidt <thaytan@noraisin.net>
Tue, 26 Oct 2010 15:41:28 +0000 (16:41 +0100)
committerJan Schmidt <thaytan@noraisin.net>
Thu, 28 Oct 2010 22:15:43 +0000 (23:15 +0100)
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

index 443ac43..80374f6 100644 (file)
@@ -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);
-
-      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 (!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);
+      }
 
       if (need_vis) {
         GstPad *srcpad;