From 3ecb8bea22182bd79e34ede48cb16c78c40a8118 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Fri, 5 Sep 2014 13:49:46 -0300 Subject: [PATCH] basetextoverlay: Do not fail the negotiation if query fails The allocation query failure doesn't mean that the negotiation has failed as the element can allocate buffers itself. Instead, only fail if the pads are flushing and the allocation query failed. https://bugzilla.gnome.org/show_bug.cgi?id=735844 --- ext/pango/gstbasetextoverlay.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c index e6a1133e91..488f1822cb 100644 --- a/ext/pango/gstbasetextoverlay.c +++ b/ext/pango/gstbasetextoverlay.c @@ -724,6 +724,7 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps) GstCapsFeatures *f; GstCaps *original_caps; gboolean original_has_meta = FALSE; + gboolean allocation_ret = TRUE; GST_DEBUG_OBJECT (overlay, "performing negotiation"); @@ -780,7 +781,7 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps) if (!gst_pad_peer_query (overlay->srcpad, query)) { /* no problem, we use the query defaults */ GST_DEBUG_OBJECT (overlay, "ALLOCATION query failed"); - ret = FALSE; + allocation_ret = FALSE; } if (caps_has_meta && gst_query_find_allocation_meta (query, @@ -792,10 +793,8 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps) overlay->attach_compo_to_buffer = attach; - if (!ret && overlay->video_flushing) { - GST_DEBUG_OBJECT (overlay, "negotiation failed, schedule reconfigure"); - gst_pad_mark_reconfigure (overlay->srcpad); - + if (!allocation_ret && overlay->video_flushing) { + ret = FALSE; } else if (original_caps && !original_has_meta && !attach) { if (caps_has_meta) { /* Some elements (fakesink) claim to accept the meta on caps but won't @@ -809,6 +808,11 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps) } } + if (!ret) { + GST_DEBUG_OBJECT (overlay, "negotiation failed, schedule reconfigure"); + gst_pad_mark_reconfigure (overlay->srcpad); + } + gst_caps_unref (caps); return ret;