[gtk/wip/chergert/quartz4u] macos: set everything as needing display on first apply



commit c1fd26502e6c64428568c90c97c8e6afd9a593b5
Author: Christian Hergert <chergert redhat com>
Date:   Sat May 9 20:47:07 2020 -0700

    macos: set everything as needing display on first apply

 gdk/macos/GdkMacosCairoView.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)
---
diff --git a/gdk/macos/GdkMacosCairoView.c b/gdk/macos/GdkMacosCairoView.c
index 311be1802d..a929325cb3 100644
--- a/gdk/macos/GdkMacosCairoView.c
+++ b/gdk/macos/GdkMacosCairoView.c
@@ -51,20 +51,27 @@
 -(void)setCairoSurfaceWithRegion:(cairo_surface_t *)cairoSurface
                      cairoRegion:(cairo_region_t *)cairoRegion
 {
-  guint n_rects;
+  guint n_rects = cairo_region_num_rectangles (cairoRegion);
 
-  g_clear_pointer (&self->surface, cairo_surface_destroy);
-  self->surface = cairo_surface_reference (cairoSurface);
-
-  n_rects = cairo_region_num_rectangles (cairoRegion);
-
-  for (guint i = 0; i < n_rects; i++)
+  if (self->surface == NULL)
     {
-      cairo_rectangle_int_t rect;
+      NSRect rect = [self bounds];
+      rect.origin.x = rect.origin.y = 0;
+      [self setNeedsDisplayInRect:rect];
+    }
+  else
+    {
+      for (guint i = 0; i < n_rects; i++)
+        {
+          cairo_rectangle_int_t rect;
 
-      cairo_region_get_rectangle (cairoRegion, i, &rect);
-      [self setNeedsDisplayInRect:NSMakeRect (rect.x, rect.y, rect.width, rect.height)];
+          cairo_region_get_rectangle (cairoRegion, i, &rect);
+          [self setNeedsDisplayInRect:NSMakeRect (rect.x, rect.y, rect.width, rect.height)];
+        }
     }
+
+  g_clear_pointer (&self->surface, cairo_surface_destroy);
+  self->surface = cairo_surface_reference (cairoSurface);
 }
 
 -(void)drawRect:(NSRect)rect


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