From d3bedda4dfbf94f7a5fe55e964c83ed531d4a793 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 18 Jun 2019 16:53:49 -0400 Subject: [PATCH] cocoa: Patched to compile and also handle possible malloc failure. --- src/video/cocoa/SDL_cocoamouse.h | 2 +- src/video/cocoa/SDL_cocoamouse.m | 16 ++++++++++------ src/video/cocoa/SDL_cocoavideo.m | 4 +++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.h b/src/video/cocoa/SDL_cocoamouse.h index b9d8196eb96ad..0d73a978df111 100644 --- a/src/video/cocoa/SDL_cocoamouse.h +++ b/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); diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index c257be02e9657..937057d57674f 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -327,13 +327,16 @@ + (NSCursor *)invisibleCursor 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 @@ + (NSCursor *)invisibleCursor 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 diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m index 036b3d227dc17..c8f32d354ef2a 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -168,7 +168,9 @@ 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));