From 6b85d501f0f2362d2d6eb86713300252a9c8f78a Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 4 Feb 2022 09:46:10 -0800 Subject: [PATCH] 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 -- 2.30.2