[gtk/wip/chergert/quartz4u] macos: set everything as needing display on first apply
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/quartz4u] macos: set everything as needing display on first apply
- Date: Sun, 10 May 2020 03:48:24 +0000 (UTC)
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]