basetextoverlay: Append our rectangle to the upstream composition, not the other...
authorSebastian Dröge <sebastian@centricular.com>
Mon, 1 Oct 2018 16:13:39 +0000 (19:13 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 1 Oct 2018 16:21:12 +0000 (19:21 +0300)
Upstream is supposed to be painted first, and only then our rectangle.

ext/pango/gstbasetextoverlay.c

index c37705f..ded822a 100644 (file)
@@ -1668,25 +1668,17 @@ gst_base_text_overlay_set_composition (GstBaseTextOverlay * overlay)
     if (overlay->composition)
       gst_video_overlay_composition_unref (overlay->composition);
 
-    overlay->composition = gst_video_overlay_composition_new (rectangle);
-    gst_video_overlay_rectangle_unref (rectangle);
-
     if (overlay->upstream_composition) {
-      guint num_overlays =
-          gst_video_overlay_composition_n_rectangles
-          (overlay->upstream_composition);
-      guint i;
-
-      for (i = 0; i < num_overlays; i++) {
-        GstVideoOverlayRectangle *rectangle;
-        rectangle =
-            gst_video_overlay_composition_get_rectangle
-            (overlay->upstream_composition, i);
-        gst_video_overlay_composition_add_rectangle (overlay->composition,
-            rectangle);
-      }
+      overlay->composition =
+          gst_video_overlay_composition_copy (overlay->upstream_composition);
+      gst_video_overlay_composition_add_rectangle (overlay->composition,
+          rectangle);
+    } else {
+      overlay->composition = gst_video_overlay_composition_new (rectangle);
     }
 
+    gst_video_overlay_rectangle_unref (rectangle);
+
   } else if (overlay->composition) {
     gst_video_overlay_composition_unref (overlay->composition);
     overlay->composition = NULL;