Mercurial > sdl-ios-xcode
changeset 3400:4ec48602f1db
iPhone interruption patch / SDL 1.3
Eric Wing to Sam
I've been sitting on this too long. I need to push.
It's untested because of the unrelated crashing bug I've been experiencing.
Also have a fix for SIZEOF_VOIDP in the config for both iPhone and Mac.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 17 Oct 2009 07:36:45 +0000 |
parents | f96615051c8c |
children | 244ca085c026 |
files | include/SDL_config_iphoneos.h include/SDL_config_macosx.h include/SDL_video.h src/video/cocoa/SDL_cocoawindow.h src/video/uikit/SDL_uikitappdelegate.h src/video/uikit/SDL_uikitappdelegate.m src/video/uikit/SDL_uikitwindow.m |
diffstat | 7 files changed, 44 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/include/SDL_config_iphoneos.h Tue Oct 13 20:17:11 2009 +0000 +++ b/include/SDL_config_iphoneos.h Sat Oct 17 07:36:45 2009 +0000 @@ -35,6 +35,12 @@ typedef unsigned long uintptr_t; #endif /* !_STDINT_H_ && !HAVE_STDINT_H */ +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif + #define SDL_HAS_64BIT_TYPE 1 #define HAVE_ALLOCA_H 1
--- a/include/SDL_config_macosx.h Tue Oct 13 20:17:11 2009 +0000 +++ b/include/SDL_config_macosx.h Sat Oct 17 07:36:45 2009 +0000 @@ -30,7 +30,12 @@ /* This is a set of defines to configure the SDL features */ -#define SIZEOF_VOIDP 4 +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + #define SDL_HAS_64BIT_TYPE 1 /* Useful headers */
--- a/include/SDL_video.h Tue Oct 13 20:17:11 2009 +0000 +++ b/include/SDL_video.h Sat Oct 17 07:36:45 2009 +0000 @@ -414,8 +414,9 @@ */ extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(SDL_DisplayMode * mode); + /** - * \fn SDL_DisplayMode *SDL_GetClosestDisplayMode(const SDL_DisplayMode *mode, SDL_DisplayMode *closest) + * \fn SDL_DisplayMode SDL_GetClosestDisplayMode(const SDL_DisplayMode mode, SDL_DisplayMode closest) * * \brief Get the closest match to the requested display mode. *
--- a/src/video/cocoa/SDL_cocoawindow.h Tue Oct 13 20:17:11 2009 +0000 +++ b/src/video/cocoa/SDL_cocoawindow.h Sat Oct 17 07:36:45 2009 +0000 @@ -24,10 +24,16 @@ #ifndef _SDL_cocoawindow_h #define _SDL_cocoawindow_h +#import <Cocoa/Cocoa.h> + typedef struct SDL_WindowData SDL_WindowData; /* *INDENT-OFF* */ -@interface Cocoa_WindowListener:NSResponder { +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 +@interface Cocoa_WindowListener : NSResponder <NSWindowDelegate> { +#else +@interface Cocoa_WindowListener : NSResponder { +#endif SDL_WindowData *_data; }
--- a/src/video/uikit/SDL_uikitappdelegate.h Tue Oct 13 20:17:11 2009 +0000 +++ b/src/video/uikit/SDL_uikitappdelegate.h Sat Oct 17 07:36:45 2009 +0000 @@ -26,9 +26,11 @@ /* *INDENT-OFF* */ @interface SDLUIKitDelegate:NSObject<UIApplicationDelegate> { UIWindow *window; + SDL_WindowID windowID; } @property (readwrite, retain) UIWindow *window; +@property (readwrite, assign) SDL_WindowID windowID; +(SDLUIKitDelegate *)sharedAppDelegate;
--- a/src/video/uikit/SDL_uikitappdelegate.m Tue Oct 13 20:17:11 2009 +0000 +++ b/src/video/uikit/SDL_uikitappdelegate.m Sat Oct 17 07:36:45 2009 +0000 @@ -56,6 +56,7 @@ @implementation SDLUIKitDelegate @synthesize window; +@synthesize windowID; /* convenience method */ +(SDLUIKitDelegate *)sharedAppDelegate { @@ -66,6 +67,7 @@ - (id)init { self = [super init]; window = nil; + windowID = 0; return self; } @@ -97,6 +99,20 @@ } +- (void) applicationWillResignActive:(UIApplication*)application +{ +// NSLog(@"%@", NSStringFromSelector(_cmd)); + SDL_SendWindowEvent(self.windowID, SDL_WINDOWEVENT_MINIMIZED, 0, 0); +} + +- (void) applicationDidBecomeActive:(UIApplication*)application +{ +// NSLog(@"%@", NSStringFromSelector(_cmd)); + SDL_SendWindowEvent(self.windowID, SDL_WINDOWEVENT_RESTORED, 0, 0); +} + + + -(void)dealloc { [window release]; [super dealloc];
--- a/src/video/uikit/SDL_uikitwindow.m Tue Oct 13 20:17:11 2009 +0000 +++ b/src/video/uikit/SDL_uikitwindow.m Sat Oct 17 07:36:45 2009 +0000 @@ -82,7 +82,7 @@ int UIKit_CreateWindow(_THIS, SDL_Window *window) { - /* iPhone applications are single window only */ + /* We currently only handle single window applications on iPhone */ if (nil != [SDLUIKitDelegate sharedAppDelegate].window) { SDL_SetError("Window already exists, no multi-window support."); return -1; @@ -96,7 +96,10 @@ return -1; } + // This saves the main window in the app delegate so event callbacks can do stuff on the window. + // This assumes a single window application design and needs to be fixed for multiple windows. [SDLUIKitDelegate sharedAppDelegate].window = uiwindow; + [SDLUIKitDelegate sharedAppDelegate].windowID = window->id; [uiwindow release]; /* release the window (the app delegate has retained it) */ return 1; @@ -113,6 +116,7 @@ /* this will also destroy the window */ [SDLUIKitDelegate sharedAppDelegate].window = nil; + [SDLUIKitDelegate sharedAppDelegate].windowID = 0; }