From 58ebbdeada6ae28535520d62bf5f2d9dd7c23f33 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 15 Jan 2016 13:58:16 +0100 Subject: [PATCH] Attempt to prevent race issue in get_chosen_screen --- gfx/drivers_context/cocoa_gl_ctx.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m index 58831b135f..f578cc7f09 100644 --- a/gfx/drivers_context/cocoa_gl_ctx.m +++ b/gfx/drivers_context/cocoa_gl_ctx.m @@ -126,7 +126,11 @@ void *get_chosen_screen(void) return [RAScreen mainScreen]; #else settings_t *settings = config_get_ptr(); - if (settings->video.monitor_index >= RAScreen.screens.count) + NSArray *screens = [RAScreen screens]; + if (!screens) + return NULL; + + if (settings->video.monitor_index >= screens.count) { RARCH_WARN("video_monitor_index is greater than the number of connected monitors; using main screen instead.\n"); #if __has_feature(objc_arc) @@ -136,7 +140,6 @@ void *get_chosen_screen(void) #endif } - NSArray *screens = [RAScreen screens]; #if __has_feature(objc_arc) return ((__bridge void*)[screens objectAtIndex:settings->video.monitor_index]); #else