From fb4c46014320ca4ca76d279a129d9a24b2d54c20 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 5 Dec 2009 19:57:49 +0000 Subject: [PATCH] Fixed compilation on Mac OS X 10.4 --- src/video/cocoa/SDL_cocoakeyboard.m | 5 +++-- src/video/cocoa/SDL_cocoamodes.h | 1 + src/video/cocoa/SDL_cocoamodes.m | 15 +++++++++++++++ src/video/cocoa/SDL_cocoamouse.m | 2 +- src/video/cocoa/SDL_cocoawindow.m | 8 +++++--- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index d41200096..c8374423f 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -180,9 +180,10 @@ - (NSAttributedString *) attributedSubstringFromRange: (NSRange) theRange return nil; } -- (NSInteger) conversationIdentifier +/* Needs long instead of NSInteger for compilation on Mac OS X 10.4 */ +- (long) conversationIdentifier { - return (NSInteger) self; + return (long) self; } // This method returns the index for character that is diff --git a/src/video/cocoa/SDL_cocoamodes.h b/src/video/cocoa/SDL_cocoamodes.h index 6f10be257..b45c77e9b 100644 --- a/src/video/cocoa/SDL_cocoamodes.h +++ b/src/video/cocoa/SDL_cocoamodes.h @@ -35,6 +35,7 @@ typedef struct } SDL_DisplayModeData; extern void Cocoa_InitModes(_THIS); +extern NSRect Cocoa_DisplayBounds(CGDirectDisplayID display); extern void Cocoa_GetDisplayModes(_THIS, SDL_VideoDisplay * display); extern int Cocoa_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode); extern void Cocoa_QuitModes(_THIS); diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index 274495415..746baab4e 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -200,6 +200,21 @@ - (void) setFrame:(NSRect)frame; SDL_stack_free(displays); } +/* This is needed on 10.4, where NSRect and CGRect are different */ +NSRect +Cocoa_DisplayBounds(CGDirectDisplayID display) +{ + NSRect nsrect; + CGRect cgrect; + + cgrect = CGDisplayBounds(display); + nsrect.origin.x = cgrect.origin.x; + nsrect.origin.y = cgrect.origin.y; + nsrect.size.width = cgrect.size.width; + nsrect.size.height = cgrect.size.height; + return nsrect; +} + static void AddDisplayMode(const void *moderef, void *context) { diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index c6c4b5920..b1f11b6c4 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -68,7 +68,7 @@ if (candidate) { SDL_DisplayData *displaydata = (SDL_DisplayData *)display->driverdata; - NSRect rect = CGDisplayBounds(displaydata->display); + NSRect rect = Cocoa_DisplayBounds(displaydata->display); point = [NSEvent mouseLocation]; point.x = point.x - rect.origin.x; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 2cb454877..4ad890f4e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -384,7 +384,7 @@ - (BOOL)canBecomeMainWindow NSString *title; int status; - rect = CGDisplayBounds(displaydata->display); + rect = Cocoa_DisplayBounds(displaydata->display); if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->x == SDL_WINDOWPOS_CENTERED) { rect.origin.x += (rect.size.width - window->w) / 2; @@ -414,7 +414,9 @@ - (BOOL)canBecomeMainWindow NSArray *screens = [NSScreen screens]; NSScreen *screen = nil; NSScreen *candidate; - for (candidate in screens) { + int i, count = [screens count]; + for (i = 0; i < count; ++i) { + screen = [screens objectAtIndex:i]; NSRect screenRect = [candidate frame]; if (rect.origin.x >= screenRect.origin.x && rect.origin.x < screenRect.origin.x + screenRect.size.width && @@ -483,7 +485,7 @@ - (BOOL)canBecomeMainWindow SDL_DisplayData *displaydata = (SDL_DisplayData *) SDL_GetDisplayFromWindow(window)->driverdata; NSRect rect; - rect = CGDisplayBounds(displaydata->display); + rect = Cocoa_DisplayBounds(displaydata->display); if ((window->flags & SDL_WINDOW_FULLSCREEN) || window->x == SDL_WINDOWPOS_CENTERED) { rect.origin.x += (rect.size.width - window->w) / 2;