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;