[gtk: 1/3] wayland/glcontext: Fix damage region on HiDPI



commit d6a6313493f658912eb64349d924dc95f6a1aa19
Author: Jonas Ådahl <jadahl gmail com>
Date:   Tue Dec 3 16:32:59 2019 +0100

    wayland/glcontext: Fix damage region on HiDPI
    
    The passed regions are in surface coordinates, but
    eglSwapBuffersWithDamage() is in buffer coordinates.

 gdk/wayland/gdkglcontext-wayland.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c
index 40df428a38..c6b2116b26 100644
--- a/gdk/wayland/gdkglcontext-wayland.c
+++ b/gdk/wayland/gdkglcontext-wayland.c
@@ -244,14 +244,15 @@ gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
       EGLint *rects = g_new (EGLint, n_rects * 4);
       cairo_rectangle_int_t rect;
       int surface_height = gdk_surface_get_height (surface);
+      int scale = gdk_surface_get_scale_factor (surface);
 
       for (i = 0, j = 0; i < n_rects; i++)
         {
           cairo_region_get_rectangle (painted, i, &rect);
-          rects[j++] = rect.x;
-          rects[j++] = surface_height - rect.height - rect.y;
-          rects[j++] = rect.width;
-          rects[j++] = rect.height;
+          rects[j++] = rect.x * scale;
+          rects[j++] = (surface_height - rect.height - rect.y) * scale;
+          rects[j++] = rect.width * scale;
+          rects[j++] = rect.height * scale;
         }
       eglSwapBuffersWithDamageEXT (display_wayland->egl_display, egl_surface, rects, n_rects);
       g_free (rects);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]