[gtk/wip/chergert/macos-fixes] macos: assume monitor colorspace when drawing
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/macos-fixes] macos: assume monitor colorspace when drawing
- Date: Fri, 4 Feb 2022 17:48:18 +0000 (UTC)
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]