Quellcode durchsuchen

cocoa: Patched to compile and also handle possible malloc failure.

Ryan C. Gordon vor 5 Jahren
Ursprung
Commit
d3bedda4df

+ 1 - 1
src/video/cocoa/SDL_cocoamouse.h

@@ -25,7 +25,7 @@
 
 #include "SDL_cocoavideo.h"
 
-extern void Cocoa_InitMouse(_THIS);
+extern int Cocoa_InitMouse(_THIS);
 extern void Cocoa_HandleMouseEvent(_THIS, NSEvent * event);
 extern void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent * event);
 extern void Cocoa_HandleMouseWarp(CGFloat x, CGFloat y);

+ 10 - 6
src/video/cocoa/SDL_cocoamouse.m

@@ -327,13 +327,16 @@ Cocoa_GetGlobalMouseState(int *x, int *y)
     return retval;
 }
 
-void
+int
 Cocoa_InitMouse(_THIS)
 {
     SDL_Mouse *mouse = SDL_GetMouse();
+    SDL_MouseData *driverdata = (SDL_MouseData*) SDL_calloc(1, sizeof(SDL_MouseData));
+    if (driverdata == NULL) {
+        return SDL_OutOfMemory();
+    }
 
-    mouse->driverdata = SDL_calloc(1, sizeof(SDL_MouseData));
-
+    mouse->driverdata = driverdata;
     mouse->CreateCursor = Cocoa_CreateCursor;
     mouse->CreateSystemCursor = Cocoa_CreateSystemCursor;
     mouse->ShowCursor = Cocoa_ShowCursor;
@@ -346,11 +349,12 @@ Cocoa_InitMouse(_THIS)
 
     SDL_SetDefaultCursor(Cocoa_CreateDefaultCursor());
 
-    Cocoa_InitMouseEventTap(mouse->driverdata);
+    Cocoa_InitMouseEventTap(driverdata);
 
     const NSPoint location =  [NSEvent mouseLocation];
-    mouse->driverdata->lastMoveX = location.x;
-    mouse->driverdata->lastMoveY = location.y;
+    driverdata->lastMoveX = location.x;
+    driverdata->lastMoveY = location.y;
+    return 0;
 }
 
 void

+ 3 - 1
src/video/cocoa/SDL_cocoavideo.m

@@ -168,7 +168,9 @@ Cocoa_VideoInit(_THIS)
 
     Cocoa_InitModes(_this);
     Cocoa_InitKeyboard(_this);
-    Cocoa_InitMouse(_this);
+    if (Cocoa_InitMouse(_this) < 0) {
+        return -1;
+    }
 
     data->allow_spaces = ((floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) && SDL_GetHintBoolean(SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES, SDL_TRUE));