summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-11-17 20:18:55 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-11-18 12:04:27 +0200
commitd34e326425fed418024441602d13535edcae6b41 (patch)
tree608a36edf6c18439faa4b9285393f5f7ccacad4c
parentb9f59fd999376b9a8805ae4a2bd722f1fad4a5b2 (diff)
textoverlay: Mark pad as needing reconfiguration again if it failed
And return FLUSHING instead of NOT_NEGOTIATED on flushing pads. https://bugzilla.gnome.org/show_bug.cgi?id=774623
-rw-r--r--ext/pango/gstbasetextoverlay.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c
index 1efe7039a..54a6d4c4c 100644
--- a/ext/pango/gstbasetextoverlay.c
+++ b/ext/pango/gstbasetextoverlay.c
@@ -923,12 +923,16 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps)
gst_caps_unref (overlay_caps);
gst_caps_unref (caps);
+ if (!ret)
+ gst_pad_mark_reconfigure (overlay->srcpad);
+
return ret;
no_format:
{
if (caps)
gst_caps_unref (caps);
+ gst_pad_mark_reconfigure (overlay->srcpad);
return FALSE;
}
}
@@ -2211,8 +2215,16 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay,
if (overlay->composition == NULL)
goto done;
- if (gst_pad_check_reconfigure (overlay->srcpad))
- gst_base_text_overlay_negotiate (overlay, NULL);
+ if (gst_pad_check_reconfigure (overlay->srcpad)) {
+ if (!gst_base_text_overlay_negotiate (overlay, NULL)) {
+ gst_pad_mark_reconfigure (overlay->srcpad);
+ gst_buffer_unref (video_frame);
+ if (GST_PAD_IS_FLUSHING (overlay->srcpad))
+ return GST_FLOW_FLUSHING;
+ else
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+ }
video_frame = gst_buffer_make_writable (video_frame);