Fixes for setting custom cursor in quartz target. SDL-1.2
authorRyan C. Gordon <icculus@icculus.org>
Fri, 30 Dec 2011 03:18:26 -0500
branchSDL-1.2
changeset 6121 e6fcc5368210
parent 6118 adbed7ec5704
child 6122 7ba8d4c1b11d
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
--- a/src/video/quartz/SDL_QuartzWM.m	Thu Dec 29 12:21:49 2011 -0500
+++ b/src/video/quartz/SDL_QuartzWM.m	Fri Dec 30 03:18:26 2011 -0500
@@ -124,16 +124,14 @@
         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);
     }