macos: fallback to conversion on WCG colorspace
authorChristian Hergert <chergert@redhat.com>
Sat, 5 Feb 2022 20:42:57 +0000 (12:42 -0800)
committerChristian Hergert <chergert@redhat.com>
Sat, 5 Feb 2022 20:42:57 +0000 (12:42 -0800)
We don't want to risk having something really weird come out if we have a
WCG colorspace, so instead only do the performance hack on systems where
the output is likely reasonable.

We will want to eventually just be drawing in the appropriate colorspace,
but that is not available yet.

gdk/macos/GdkMacosCairoView.c

index ad8c72f649238893cce3cd208d5c4ada9a53b293..6596702fe8d3ea36a4a2be464c6fc823c7a9e4d5 100644 (file)
@@ -97,6 +97,15 @@ release_surface_provider (void       *info,
       monitor = _gdk_macos_surface_get_best_monitor ([self gdkSurface]);
       rgb = _gdk_macos_monitor_copy_colorspace (GDK_MACOS_MONITOR (monitor));
 
+      /* If we have an WCG colorspace, just take the slow path or we risk
+       * really screwing things up.
+       */
+      if (CGColorSpaceIsWideGamutRGB (rgb))
+        {
+          CGColorSpaceRelease (rgb);
+          rgb = CGColorSpaceCreateDeviceRGB ();
+        }
+
       /* Assert that our image surface was created correctly with
        * 16-byte aligned pointers and strides. This is needed to
        * ensure that we're working with fast paths in CoreGraphics.