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;