drawcontext: Only pass the region that matters
authorBenjamin Otte <otte@redhat.com>
Mon, 23 Apr 2018 21:26:14 +0000 (23:26 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 24 Apr 2018 21:16:58 +0000 (23:16 +0200)
We used to pass 2 regions to GdkDrawCotnext.end_frame() but code was
confusing what they meant. So we now don't do that anymore and only pass
the region that matters: The frame region.

gdk/gdkdrawcontext.c
gdk/gdkdrawcontextprivate.h
gdk/gdkglcontext.c
gdk/gdkvulkancontext.c
gdk/wayland/gdkcairocontext-wayland.c
gdk/wayland/gdkglcontext-wayland.c
gdk/wayland/gdkvulkancontext-wayland.c
gdk/win32/gdkglcontext-win32.c
gdk/x11/gdkcairocontext-x11.c
gdk/x11/gdkglcontext-x11.c
gdk/x11/gdkvulkancontext-x11.c

index 52728d6ac3f64a2c8a1057605af6d431fa3c11b6..169bdb82cc1104d272dbc7543a3d7a4e457708cd 100644 (file)
@@ -352,9 +352,7 @@ gdk_draw_context_end_frame (GdkDrawContext *context)
       return;
     }
 
-  GDK_DRAW_CONTEXT_GET_CLASS (context)->end_frame (context,
-                                                   priv->frame_region,
-                                                   priv->surface->active_update_area);
+  GDK_DRAW_CONTEXT_GET_CLASS (context)->end_frame (context, priv->frame_region);
 
   g_clear_pointer (&priv->frame_region, cairo_region_destroy);
   g_clear_object (&priv->surface->paint_context);
index 9ea9eaed8cd949267860046838d5fe817d5adb88..8ae1d0e8f88b60211d1bc35ba3f243f681dfe8fd 100644 (file)
@@ -43,8 +43,7 @@ struct _GdkDrawContextClass
   void                  (* begin_frame)                         (GdkDrawContext         *context,
                                                                  cairo_region_t         *update_area);
   void                  (* end_frame)                           (GdkDrawContext         *context,
-                                                                 cairo_region_t         *painted,
-                                                                 cairo_region_t         *damage);
+                                                                 cairo_region_t         *painted);
   void                  (* surface_resized)                     (GdkDrawContext         *context);
 };
 
index 0b9f93d79546ac730917811eac4342ec56aa30b3..d443a83cf801a71a70d84e6c02b464d9e95ad8e6 100644 (file)
@@ -326,8 +326,7 @@ gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_gl_context_real_end_frame (GdkDrawContext *draw_context,
-                               cairo_region_t *painted,
-                               cairo_region_t *damage)
+                               cairo_region_t *painted)
 {
   GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
   GdkGLContext *shared;
@@ -335,7 +334,7 @@ gdk_gl_context_real_end_frame (GdkDrawContext *draw_context,
   shared = gdk_gl_context_get_shared_context (context);
   if (shared)
     {
-      GDK_DRAW_CONTEXT_GET_CLASS (GDK_DRAW_CONTEXT (shared))->end_frame (GDK_DRAW_CONTEXT (shared), painted, damage);
+      GDK_DRAW_CONTEXT_GET_CLASS (GDK_DRAW_CONTEXT (shared))->end_frame (GDK_DRAW_CONTEXT (shared), painted);
       return;
     }
 
index fca08fed95cac155f9f2424ae80e08046c75697e..1546f9d01c9fe24d41c0cf6ae02f8fa5b977d47c 100644 (file)
@@ -401,8 +401,7 @@ gdk_vulkan_context_begin_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_vulkan_context_end_frame (GdkDrawContext *draw_context,
-                              cairo_region_t *painted,
-                              cairo_region_t *damage)
+                              cairo_region_t *painted)
 {
   GdkVulkanContext *context = GDK_VULKAN_CONTEXT (draw_context);
   GdkVulkanContextPrivate *priv = gdk_vulkan_context_get_instance_private (context);
index fe4237f63df69673ecfc86a0a4d940ec3b344777..2c248597dc5cc66cab3057b21136947440d5e20b 100644 (file)
@@ -173,8 +173,7 @@ gdk_wayland_cairo_context_begin_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_wayland_cairo_context_end_frame (GdkDrawContext *draw_context,
-                                     cairo_region_t *painted,
-                                     cairo_region_t *damage)
+                                     cairo_region_t *painted)
 {
   GdkWaylandCairoContext *self = GDK_WAYLAND_CAIRO_CONTEXT (draw_context);
   GdkSurface *surface = gdk_draw_context_get_surface (draw_context);
index 18863c3c8adcc68b76c7968d945133c632a9d99b..1e1259bbac0b2eeb79244db36ce2991d34002bf0 100644 (file)
@@ -204,8 +204,7 @@ gdk_wayland_gl_context_get_damage (GdkGLContext *context)
 
 static void
 gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
-                                  cairo_region_t *painted,
-                                  cairo_region_t *damage)
+                                  cairo_region_t *painted)
 {
   GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
   GdkSurface *surface = gdk_gl_context_get_surface (context);
@@ -214,7 +213,7 @@ gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
   GdkWaylandGLContext *context_wayland = GDK_WAYLAND_GL_CONTEXT (context);
   EGLSurface egl_surface;
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->end_frame (draw_context, painted, damage);
+  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->end_frame (draw_context, painted);
   if (gdk_gl_context_get_shared_context (context))
     return;
 
@@ -226,16 +225,16 @@ gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context,
   gdk_wayland_surface_sync (surface);
   gdk_wayland_surface_request_frame (surface);
 
-  if (display_wayland->have_egl_swap_buffers_with_damage && damage != NULL)
+  if (display_wayland->have_egl_swap_buffers_with_damage)
     {
-      int i, j, n_rects = cairo_region_num_rectangles (damage);
+      int i, j, n_rects = cairo_region_num_rectangles (painted);
       EGLint *rects = g_new (EGLint, n_rects * 4);
       cairo_rectangle_int_t rect;
       int surface_height = gdk_surface_get_height (surface);
 
       for (i = 0, j = 0; i < n_rects; i++)
         {
-          cairo_region_get_rectangle (damage, i, &rect);
+          cairo_region_get_rectangle (painted, i, &rect);
           rects[j++] = rect.x;
           rects[j++] = surface_height - rect.height - rect.y;
           rects[j++] = rect.width;
index 714ae6de4b260492e98c144ef088e67e8a5261aa..59b85af12bfcff6e350eca7bb4f313f30757aa3f 100644 (file)
@@ -61,15 +61,14 @@ gdk_wayland_vulkan_context_create_surface (GdkVulkanContext *context,
 
 static void
 gdk_vulkan_context_wayland_end_frame (GdkDrawContext *context,
-                                      cairo_region_t *painted,
-                                      cairo_region_t *damage)
+                                      cairo_region_t *painted)
 {
   GdkSurface *surface = gdk_draw_context_get_surface (GDK_DRAW_CONTEXT (context));
 
   gdk_wayland_surface_sync (surface);
   gdk_wayland_surface_request_frame (surface);
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_vulkan_context_parent_class)->end_frame (context, painted, damage);
+  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_vulkan_context_parent_class)->end_frame (context, painted);
 }
 
 static void
index bf6af19b77739f5b4fbf98e2cdbde9cffd7d9208..4845f4ba16d1d70f3126e3ac8307f4b3e19f4407 100644 (file)
@@ -102,8 +102,7 @@ gdk_gl_blit_region (GdkSurface *surface, cairo_region_t *region)
 
 static void
 gdk_win32_gl_context_end_frame (GdkDrawContext *draw_context,
-                                cairo_region_t *painted,
-                                cairo_region_t *damage)
+                                cairo_region_t *painted)
 {
   GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
   GdkWin32GLContext *context_win32 = GDK_WIN32_GL_CONTEXT (context);
@@ -112,7 +111,7 @@ gdk_win32_gl_context_end_frame (GdkDrawContext *draw_context,
   gboolean can_wait = display->hasWglOMLSyncControl;
   cairo_rectangle_int_t whole_window;
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->end_frame (draw_context, painted, damage);
+  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_parent_class)->end_frame (draw_context, painted);
   if (gdk_gl_context_get_shared_context (context))
     return;
 
index 41fb43ee0c0107a07496928f6f43318691b8ce81..ba5086224980530f7043a3a1dde0789ad544f372 100644 (file)
@@ -78,8 +78,7 @@ gdk_x11_cairo_context_begin_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_x11_cairo_context_end_frame (GdkDrawContext *draw_context,
-                                 cairo_region_t *painted,
-                                 cairo_region_t *damage)
+                                 cairo_region_t *painted)
 {
   GdkX11CairoContext *self = GDK_X11_CAIRO_CONTEXT (draw_context);
   cairo_t *cr;
index f5d00eeb272aa5125c65f7c4bf9b5de3d954c24a..0c8970fd5c9dd0bc1b3fddc9fe38a6ee355a9623 100644 (file)
@@ -120,8 +120,7 @@ maybe_wait_for_vblank (GdkDisplay  *display,
 
 static void
 gdk_x11_gl_context_end_frame (GdkDrawContext *draw_context,
-                              cairo_region_t *painted,
-                              cairo_region_t *damage)
+                              cairo_region_t *painted)
 {
   GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
   GdkX11GLContext *context_x11 = GDK_X11_GL_CONTEXT (context);
@@ -133,7 +132,7 @@ gdk_x11_gl_context_end_frame (GdkDrawContext *draw_context,
   DrawableInfo *info;
   GLXDrawable drawable;
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_x11_gl_context_parent_class)->end_frame (draw_context, painted, damage);
+  GDK_DRAW_CONTEXT_CLASS (gdk_x11_gl_context_parent_class)->end_frame (draw_context, painted);
   if (gdk_gl_context_get_shared_context (context))
     return;
 
index 733acd93b648ceb07a58b560a2706271c6591b18..c1a6a225d063344d3aebbe1e87769ece158a63da 100644 (file)
@@ -60,14 +60,13 @@ gdk_x11_vulkan_context_create_surface (GdkVulkanContext *context,
 
 static void
 gdk_x11_vulkan_context_end_frame (GdkDrawContext *context,
-                                  cairo_region_t *painted,
-                                  cairo_region_t *damage)
+                                  cairo_region_t *painted)
 {
   GdkSurface *surface = gdk_draw_context_get_surface (context);
 
   gdk_x11_surface_pre_damage (surface);
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_x11_vulkan_context_parent_class)->end_frame (context, painted, damage);
+  GDK_DRAW_CONTEXT_CLASS (gdk_x11_vulkan_context_parent_class)->end_frame (context, painted);
 }
 
 static void