[gimp] Fix screen resolution detection on OSX



commit 5b6126146aec878b6c56171e03feab56b8104299
Author: Oleksii Samorukov <samm os2 kiev ua>
Date:   Mon Jun 25 01:31:09 2018 +0200

    Fix screen resolution detection on OSX
    
    GTK always returns 72 dpi due to API used. This patch using Cocoa
    directly instead. Tested on Retina and non-hidpi displays.

 app/widgets/gimpwidgets-utils.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)
---
diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c
index f9a89f46b5..cadb7a194b 100644
--- a/app/widgets/gimpwidgets-utils.c
+++ b/app/widgets/gimpwidgets-utils.c
@@ -33,6 +33,10 @@
 #include <gdk/gdkx.h>
 #endif
 
+#ifdef PLATFORM_OSX
+#include <Carbon/Carbon.h>
+#endif
+
 #include "libgimpbase/gimpbase.h"
 #include "libgimpconfig/gimpconfig.h"
 #include "libgimpmath/gimpmath.h"
@@ -809,16 +813,31 @@ gimp_get_monitor_resolution (GdkMonitor *monitor,
   gint         width_mm, height_mm;
   gdouble      x = 0.0;
   gdouble      y = 0.0;
+#ifdef PLATFORM_OSX
+  CGSize       size;
+#endif
 
   g_return_if_fail (GDK_IS_MONITOR (monitor));
   g_return_if_fail (xres != NULL);
   g_return_if_fail (yres != NULL);
 
+#ifndef PLATFORM_OSX
   gdk_monitor_get_geometry (monitor, &size_pixels);
 
   width_mm  = gdk_monitor_get_width_mm  (monitor);
   height_mm = gdk_monitor_get_height_mm (monitor);
-
+#else
+  width_mm  = 0;
+  height_mm = 0;
+  size = CGDisplayScreenSize (kCGDirectMainDisplay);
+  if (!CGSizeEqualToSize (size, CGSizeZero))
+    {
+      width_mm  = size.width;
+      height_mm = size.height;
+    }
+  size_pixels.width  = CGDisplayPixelsWide (kCGDirectMainDisplay);
+  size_pixels.height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
+#endif
   /*
    * From xdpyinfo.c:
    *


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