test: vaapicontext: fix draw callback with multiple videos
authorMichael Olbrich <m.olbrich@pengutronix.de>
Thu, 18 Jun 2020 18:25:18 +0000 (20:25 +0200)
committerMichael Olbrich <m.olbrich@pengutronix.de>
Fri, 31 Jul 2020 12:02:33 +0000 (14:02 +0200)
The callback is called for both windows. So make sure that
gst_video_overlay_set_render_rectangle() is called for the correct one.
Otherwise, the left video will be randomly moved behind the right video.

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

tests/examples/test-vaapicontext.c

index 5b46795..98760dc 100644 (file)
@@ -307,14 +307,17 @@ draw_cb (GtkWidget * widget, cairo_t * cr, gpointer data)
 {
   AppData *app = data;
   GtkAllocation allocation;
+  int i;
+
+  i = (widget == app->video_widget[0]) ? 0 : 1;
 
   get_allocation (widget, &allocation);
 
-  gst_println ("draw_cb x %d, y %d, w %d, h %d\n",
+  gst_println ("draw_cb[%d] x %d, y %d, w %d, h %d\n", i,
       allocation.x, allocation.y, allocation.width, allocation.height);
 
-  if (app->overlay[0]) {
-    gst_video_overlay_set_render_rectangle (app->overlay[0], allocation.x,
+  if (app->overlay[i]) {
+    gst_video_overlay_set_render_rectangle (app->overlay[i], allocation.x,
         allocation.y, allocation.width, allocation.height);
   }
 }