summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/assrender/gstassrender.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index 65617bb7d..52f9740e9 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -1741,7 +1741,6 @@ gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query)
static gboolean
gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
{
- gint i;
gboolean ret = FALSE;
GstAssRender *render = GST_ASS_RENDER (parent);
@@ -1812,6 +1811,11 @@ gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
break;
}
case GST_EVENT_FLUSH_STOP:
+ g_mutex_lock (&render->ass_mutex);
+ if (render->ass_track) {
+ ass_flush_events (render->ass_track);
+ }
+ g_mutex_unlock (&render->ass_mutex);
GST_ASS_RENDER_LOCK (render);
GST_INFO_OBJECT (render, "text flush stop");
render->subtitle_flushing = FALSE;
@@ -1824,17 +1828,6 @@ gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
break;
case GST_EVENT_FLUSH_START:
GST_DEBUG_OBJECT (render, "text flush start");
- g_mutex_lock (&render->ass_mutex);
- if (render->ass_track) {
- /* delete any events on the ass_track */
- for (i = 0; i < render->ass_track->n_events; i++) {
- GST_DEBUG_OBJECT (render, "deleted event with eid %i", i);
- ass_free_event (render->ass_track, i);
- }
- render->ass_track->n_events = 0;
- GST_DEBUG_OBJECT (render, "done flushing");
- }
- g_mutex_unlock (&render->ass_mutex);
GST_ASS_RENDER_LOCK (render);
render->subtitle_flushing = TRUE;
GST_ASS_RENDER_BROADCAST (render);