Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
iPhone interruption patch / SDL 1.3
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
slouken committed Oct 17, 2009
1 parent e310137 commit e344bc0
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 4 deletions.
6 changes: 6 additions & 0 deletions include/SDL_config_iphoneos.h
Expand Up @@ -35,6 +35,12 @@ typedef unsigned int uint32_t;
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
Expand Down
7 changes: 6 additions & 1 deletion include/SDL_config_macosx.h
Expand Up @@ -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 */
Expand Down
3 changes: 2 additions & 1 deletion include/SDL_video.h
Expand Up @@ -414,8 +414,9 @@ extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(SDL_DisplayMode * mode);
*/
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.
*
Expand Down
8 changes: 7 additions & 1 deletion src/video/cocoa/SDL_cocoawindow.h
Expand Up @@ -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;
}

Expand Down
2 changes: 2 additions & 0 deletions src/video/uikit/SDL_uikitappdelegate.h
Expand Up @@ -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;

Expand Down
16 changes: 16 additions & 0 deletions src/video/uikit/SDL_uikitappdelegate.m
Expand Up @@ -56,6 +56,7 @@ int main(int argc, char **argv) {
@implementation SDLUIKitDelegate

@synthesize window;
@synthesize windowID;

/* convenience method */
+(SDLUIKitDelegate *)sharedAppDelegate {
Expand All @@ -66,6 +67,7 @@ +(SDLUIKitDelegate *)sharedAppDelegate {
- (id)init {
self = [super init];
window = nil;
windowID = 0;
return self;
}

Expand Down Expand Up @@ -97,6 +99,20 @@ - (void)applicationWillTerminate:(UIApplication *)application {

}

- (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];
Expand Down
6 changes: 5 additions & 1 deletion src/video/uikit/SDL_uikitwindow.m
Expand Up @@ -82,7 +82,7 @@ static int SetupWindowData(_THIS, SDL_Window *window, UIWindow *uiwindow, SDL_bo

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;
Expand All @@ -96,7 +96,10 @@ int UIKit_CreateWindow(_THIS, SDL_Window *window) {
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;
Expand All @@ -113,6 +116,7 @@ void UIKit_DestroyWindow(_THIS, SDL_Window * window) {

/* this will also destroy the window */
[SDLUIKitDelegate sharedAppDelegate].window = nil;
[SDLUIKitDelegate sharedAppDelegate].windowID = 0;

}

Expand Down

0 comments on commit e344bc0

Please sign in to comment.