[gtk/wip/chergert/macos-fixes] macos: assume monitor colorspace when drawing



commit 6b85d501f0f2362d2d6eb86713300252a9c8f78a
Author: Christian Hergert <christian hergert me>
Date:   Fri Feb 4 09:46:10 2022 -0800

    macos: assume monitor colorspace when drawing
    
    When using software rendering w/ cairo, assume we're drawing in
    the best-monitor's colorspace rather than RGB to avoid colorspace
    conversions on every frame.

 gdk/macos/GdkMacosCairoView.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gdk/macos/GdkMacosCairoView.c b/gdk/macos/GdkMacosCairoView.c
index d3573f5950..ad8c72f649 100644
--- a/gdk/macos/GdkMacosCairoView.c
+++ b/gdk/macos/GdkMacosCairoView.c
@@ -28,6 +28,7 @@
 #import "GdkMacosCairoView.h"
 #import "GdkMacosCairoSubview.h"
 
+#include "gdkmacosmonitor-private.h"
 #include "gdkmacossurface-private.h"
 
 @implementation GdkMacosCairoView
@@ -78,6 +79,7 @@ release_surface_provider (void       *info,
       CGColorSpaceRef rgb;
       cairo_format_t format;
       CGBitmapInfo bitmap = kCGBitmapByteOrder32Host;
+      GdkMonitor *monitor;
       guint8 *framebuffer;
       size_t width;
       size_t height;
@@ -92,7 +94,8 @@ release_surface_provider (void       *info,
       rowstride = cairo_image_surface_get_stride (cairoSurface);
       width = cairo_image_surface_get_width (cairoSurface);
       height = cairo_image_surface_get_height (cairoSurface);
-      rgb = CGColorSpaceCreateDeviceRGB ();
+      monitor = _gdk_macos_surface_get_best_monitor ([self gdkSurface]);
+      rgb = _gdk_macos_monitor_copy_colorspace (GDK_MACOS_MONITOR (monitor));
 
       /* Assert that our image surface was created correctly with
        * 16-byte aligned pointers and strides. This is needed to


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