diff --git a/ChangeLog b/ChangeLog index 75a8435590..d12b9dce75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-03-07 Julien MOUTTE + + * ext/pango/gsttextoverlay.c: (gst_text_overlay_text_event), + (gst_text_overlay_video_event): Fix wrong EOS handling on text + pad. We were releasing the queued text buffer when we should keep + it until video pad gets EOS or discard the text buffer because it's + too old. That was eating the last subtitle buffer. Add some more + debug. + 2006-03-07 Tim-Philipp Müller * ext/pango/gsttextoverlay.c: (gst_text_overlay_render_text), diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c index 5f035bdfb4..865a20e669 100644 --- a/ext/pango/gsttextoverlay.c +++ b/ext/pango/gsttextoverlay.c @@ -1021,6 +1021,8 @@ gst_text_overlay_text_event (GstPad * pad, GstEvent * event) overlay = GST_TEXT_OVERLAY (gst_pad_get_parent (pad)); + GST_DEBUG_OBJECT (pad, "received event %s", GST_EVENT_TYPE_NAME (event)); + switch (GST_EVENT_TYPE (event)) { case GST_EVENT_NEWSEGMENT: /* We just ignore those events from the text pad */ @@ -1047,7 +1049,8 @@ gst_text_overlay_text_event (GstPad * pad, GstEvent * event) GST_OBJECT_LOCK (overlay); /* We use flushing to make sure we return WRONG_STATE */ overlay->text_flushing = TRUE; - gst_text_overlay_pop_text (overlay); + /* We don't signal anything here because we want to keep the last queued + buffer until video pad receives EOS or discard the buffer */ GST_OBJECT_UNLOCK (overlay); gst_event_unref (event); ret = TRUE; @@ -1071,6 +1074,8 @@ gst_text_overlay_video_event (GstPad * pad, GstEvent * event) overlay = GST_TEXT_OVERLAY (gst_pad_get_parent (pad)); + GST_DEBUG_OBJECT (pad, "received event %s", GST_EVENT_TYPE_NAME (event)); + switch (GST_EVENT_TYPE (event)) { case GST_EVENT_NEWSEGMENT: {