basetextoverlay: Fix overlay never rendering again if width reaches 1px
authorPiotr Brzeziński <piotr@centricular.com>
Mon, 6 Nov 2023 23:27:57 +0000 (00:27 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 8 Nov 2023 14:49:31 +0000 (14:49 +0000)
If text width ever reached 1px, for example after resizing the output window, the overlay would stop rendering
and never return again. The 1px condition itself does not seem to make much sense here anyway.

This was a chain of events: width reached 1, so the composition was set to NULL. Then, after resizing the output window,
push_frame() was called but would not attempt to renegotiate because composition is NULL. This caused the width/height
to never be updated again, as that only happens during negotiation, so the overlay was gone for good.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5623>

subprojects/gst-plugins-base/ext/pango/gstbasetextoverlay.c

index 9eb7d30..1000ec8 100644 (file)
@@ -1656,7 +1656,7 @@ gst_base_text_overlay_set_composition (GstBaseTextOverlay * overlay)
   gint xpos, ypos;
   GstVideoOverlayRectangle *rectangle;
 
-  if (overlay->text_image && overlay->text_width != 1) {
+  if (overlay->text_image) {
     gint render_width, render_height;
 
     gst_base_text_overlay_get_pos (overlay, &xpos, &ypos);