From c44ed8af36bbb1f114a71e5d910441376714c65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 7 Dec 2022 14:49:05 +0200 Subject: [PATCH] textrender: Negotiate caps on a GAP event if none were negotiated yet Otherwise downstream wouldn't have received a segment event either and wouldn't know what to do with the gap event And also forward any pending segment event. Part-of: --- .../ext/pango/gsttextrender.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/subprojects/gst-plugins-base/ext/pango/gsttextrender.c b/subprojects/gst-plugins-base/ext/pango/gsttextrender.c index 52ab737c78..e792995fa1 100644 --- a/subprojects/gst-plugins-base/ext/pango/gsttextrender.c +++ b/subprojects/gst-plugins-base/ext/pango/gsttextrender.c @@ -650,6 +650,25 @@ gst_text_render_event (GstPad * pad, GstObject * parent, GstEvent * event) break; } + case GST_EVENT_GAP: + /* Negotiate caps first if we negotiated none so far as otherwise + * downstream wouldn't have received a segment event either and + * wouldn't know what to do with the gap event */ + if (!gst_pad_has_current_caps (render->srcpad)) { + if (gst_text_render_renegotiate (render) != GST_FLOW_OK) { + gst_event_unref (event); + ret = FALSE; + break; + } + } + + if (render->segment_event) { + gst_pad_push_event (render->srcpad, render->segment_event); + render->segment_event = NULL; + } + + ret = gst_pad_event_default (pad, parent, event); + break; default: ret = gst_pad_event_default (pad, parent, event); break;