pango: handle GAP event to update text position
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Wed, 5 Sep 2012 09:42:05 +0000 (11:42 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Wed, 5 Sep 2012 10:02:32 +0000 (12:02 +0200)
ext/pango/gstbasetextoverlay.c

index 21d658c..d60c070 100644 (file)
@@ -1762,6 +1762,23 @@ gst_base_text_overlay_text_event (GstPad * pad, GstObject * parent,
       GST_BASE_TEXT_OVERLAY_UNLOCK (overlay);
       break;
     }
+    case GST_EVENT_GAP:
+    {
+      GstClockTime start, duration;
+
+      gst_event_parse_gap (event, &start, &duration);
+      if (GST_CLOCK_TIME_IS_VALID (duration))
+        start += duration;
+      /* we do not expect another buffer until after gap,
+       * so that is our position now */
+      overlay->text_segment.position = start;
+
+      /* wake up the video chain, it might be waiting for a text buffer or
+       * a text segment update */
+      GST_BASE_TEXT_OVERLAY_LOCK (overlay);
+      GST_BASE_TEXT_OVERLAY_BROADCAST (overlay);
+      GST_BASE_TEXT_OVERLAY_UNLOCK (overlay);
+    }
     case GST_EVENT_FLUSH_STOP:
       GST_BASE_TEXT_OVERLAY_LOCK (overlay);
       GST_INFO_OBJECT (overlay, "text flush stop");