From 1379fc3ad09902e6ea04e22bcc54c87a292014a2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 30 Dec 2011 03:18:26 -0500 Subject: [PATCH] Fixes for setting custom cursor in quartz target. This fixes a logic error, and allows setting the cursor from off the main thread, which isn't strictly a good idea, but previous versions of SDL on Mac OS X apparently allowed it, so we'll make the effort here. Fixes Bugzilla #1355. Thanks to Alexei Svitkine for the patch! --- src/video/quartz/SDL_QuartzWM.m | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/video/quartz/SDL_QuartzWM.m b/src/video/quartz/SDL_QuartzWM.m index f599954bb..ce9908bcd 100644 --- a/src/video/quartz/SDL_QuartzWM.m +++ b/src/video/quartz/SDL_QuartzWM.m @@ -124,16 +124,14 @@ int QZ_ShowWMCursor (_THIS, WMcursor *cursor) { QZ_UpdateCursor(this); } else { - if (qz_window ==nil || (mode_flags & SDL_FULLSCREEN)) { - [ cursor->nscursor set ]; - } - else { + if ( qz_window != nil && !(mode_flags & SDL_FULLSCREEN) ) { [ qz_window invalidateCursorRectsForView: [ qz_window contentView ] ]; } if ( ! cursor_should_be_visible ) { cursor_should_be_visible = YES; QZ_ChangeGrabState (this, QZ_SHOWCURSOR); } + [ cursor->nscursor performSelectorOnMainThread:@selector(set) withObject:nil waitUntilDone:NO ]; QZ_UpdateCursor(this); }