ext/pango/gsttextoverlay.c: Fix state change deadlock.
authorJulien Moutte <julien@moutte.net>
Sun, 19 Feb 2006 12:05:23 +0000 (12:05 +0000)
committerJulien Moutte <julien@moutte.net>
Sun, 19 Feb 2006 12:05:23 +0000 (12:05 +0000)
Original commit message from CVS:
2006-02-19  Julien MOUTTE  <julien@moutte.net>

* ext/pango/gsttextoverlay.c: (gst_text_overlay_base_init),
(gst_text_overlay_finalize), (gst_text_overlay_init),
(gst_text_overlay_setcaps), (gst_text_overlay_src_event),
(gst_text_overlay_render_text),
(gst_text_overlay_text_pad_link),
(gst_text_overlay_text_event), (gst_text_overlay_video_event),
(gst_text_overlay_pop_text), (gst_text_overlay_text_chain),
(gst_text_overlay_video_chain), (gst_text_overlay_change_state):
Fix state change deadlock.

ChangeLog
ext/pango/gsttextoverlay.c

index eaad233..ee5951d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,17 @@
        (gst_text_overlay_text_event), (gst_text_overlay_video_event),
        (gst_text_overlay_pop_text), (gst_text_overlay_text_chain),
        (gst_text_overlay_video_chain), (gst_text_overlay_change_state):
+       Fix state change deadlock.
+
+2006-02-19  Julien MOUTTE  <julien@moutte.net>
+
+       * ext/pango/gsttextoverlay.c: (gst_text_overlay_base_init),
+       (gst_text_overlay_finalize), (gst_text_overlay_init),
+       (gst_text_overlay_setcaps), (gst_text_overlay_src_event),
+       (gst_text_overlay_render_text), (gst_text_overlay_text_pad_link),
+       (gst_text_overlay_text_event), (gst_text_overlay_video_event),
+       (gst_text_overlay_pop_text), (gst_text_overlay_text_chain),
+       (gst_text_overlay_video_chain), (gst_text_overlay_change_state):
        * ext/pango/gsttextoverlay.h: Fix seeking both for muxed formats
        and subtitles files.
 
index 0a371b3..9566b2d 100644 (file)
@@ -1235,13 +1235,16 @@ static GstStateChangeReturn
 gst_text_overlay_change_state (GstElement * element, GstStateChange transition)
 {
   GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
-  /*GstTextOverlay *overlay = GST_TEXT_OVERLAY (element); */
+  GstTextOverlay *overlay = GST_TEXT_OVERLAY (element);
 
   switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
+      GST_OBJECT_LOCK (overlay);
+      overlay->text_flushing = TRUE;
+      gst_text_overlay_pop_text (overlay);
+      GST_OBJECT_UNLOCK (overlay);
       break;
     default:
       break;