From 09a183df3fcdfbb4054c6d51a046a36bb44933ea Mon Sep 17 00:00:00 2001
From: twinaphex <libretro@gmail.com>
Date: Fri, 15 Jan 2016 22:15:23 +0100
Subject: [PATCH] (OSX) Create get_backing_scale_factor

---
 gfx/drivers_context/cocoa_gl_ctx.m | 22 +++++++++++++++++-----
 ui/drivers/ui_cocoa.m              | 19 +++++--------------
 2 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m
index a908a079ae..7bf0b40d3c 100644
--- a/gfx/drivers_context/cocoa_gl_ctx.m
+++ b/gfx/drivers_context/cocoa_gl_ctx.m
@@ -152,6 +152,22 @@ void *get_chosen_screen(void)
 #endif
 }
 
+float get_backing_scale_factor(void)
+{
+#if __has_feature(objc_arc)
+   RAScreen *screen = (__bridge RAScreen*)get_chosen_screen();
+#else
+   RAScreen *screen = (RAScreen*)get_chosen_screen();
+#endif
+   if (!screen)
+      return 0.0;
+#if MAC_OS_X_VERSION_10_7
+   return screen.backingScaleFactor;
+#else
+   return 1.0f;
+#endif
+}
+
 void cocoagl_gfx_ctx_update(void)
 {
 #if defined(HAVE_COCOA)
@@ -419,11 +435,7 @@ static bool cocoagl_gfx_ctx_get_metrics(void *data, enum display_metric_types ty
     float   display_height        = display_pixel_size.height;
     float   physical_width        = display_physical_size.width;
     float   physical_height       = display_physical_size.height;
-#if MAC_OS_X_VERSION_10_7
-    float   scale                 = screen.backingScaleFactor;
-#else
-	 float   scale                 = 1.0f;
-#endif
+    float   scale                 = get_backing_scale_factor();
     float   dpi                   = (display_width/ physical_width) * 25.4f * scale;
 #elif defined(HAVE_COCOATOUCH)
     float   scale                 = cocoagl_gfx_ctx_get_native_scale();
diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m
index cc266750ce..6ee0f97f09 100644
--- a/ui/drivers/ui_cocoa.m
+++ b/ui/drivers/ui_cocoa.m
@@ -33,7 +33,8 @@
 
 static id apple_platform;
 
-void *get_chosen_screen(void);
+extern void *get_chosen_screen(void);
+extern float get_backing_scale_factor(void)
 
 void apple_rarch_exited(void)
 {
@@ -108,25 +109,15 @@ void apple_rarch_exited(void)
             NSPoint pos;
             NSPoint mouse_pos;
             CGFloat backing_scale_factor = 1.0f;
-
-#if __has_feature(objc_arc)
-            RAScreen *screen = (__bridge RAScreen*)get_chosen_screen();
-#else
-            RAScreen *screen = (RAScreen*)get_chosen_screen();
-#endif
-
-            apple = (cocoa_input_data_t*)input_driver_get_data();
-            if (!apple || !screen)
+            apple                        = (cocoa_input_data_t*)input_driver_get_data();
+            float   backing_scale_factor = get_backing_scale_factor();
+            if (!apple || (backing_scale_factor == 0.0)
                return;
 
             /* Relative */
             apple->mouse_rel_x = event.deltaX;
             apple->mouse_rel_y = event.deltaY;
 
-#if MAC_OS_X_VERSION_10_7
-            backing_scale_factor = screen.backingScaleFactor;
-#endif
-
             /* Absolute */
             pos = [[CocoaView get] convertPoint:[event locationInWindow] fromView:nil];
             apple->touches[0].screen_x = pos.x * backing_scale_factor;