playsink: Fix disabling of subtitles if subtitles were used before
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Jan 2010 12:36:23 +0000 (13:36 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Jan 2010 12:36:23 +0000 (13:36 +0100)
In this case the video still goes through the text chain and
subtitles are still going in there, in case subtitles are
enabled again. This makes sure that re-enabling subtitles
happens instantly.

Fixes hanging video when disabling subtitles, caused by an
unliked video pad.

gst/playback/gstplaysink.c

index 0887f7a..aaed656 100644 (file)
@@ -1787,7 +1787,8 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
       add_chain (GST_PLAY_CHAIN (playsink->videochain), TRUE);
       activate_chain (GST_PLAY_CHAIN (playsink->videochain), TRUE);
       /* if we are not part of vis or subtitles, set the ghostpad target */
-      if (!need_vis && !need_text) {
+      if (!need_vis && !need_text && !playsink->text_pad
+          && !playsink->textchain) {
         GST_DEBUG_OBJECT (playsink, "ghosting video sinkpad");
         gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->video_pad),
             playsink->videochain->sinkpad);
@@ -1859,7 +1860,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
     }
     if (!need_video && playsink->video_pad)
       gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->video_pad), NULL);
-    if (playsink->text_pad)
+    if (playsink->text_pad && !playsink->textchain)
       gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->text_pad), NULL);
   }