Mercurial > sdl-ios-xcode
changeset 2401:32602672020e gsoc2008_iphone
turned singleton window instance into member variable instead. Added convenience method for getting singleton app delegate.
author | Holmes Futrell <hfutrell@umail.ucsb.edu> |
---|---|
date | Tue, 22 Jul 2008 23:02:53 +0000 |
parents | e103b316a4ef |
children | 1fe89198aba5 |
files | src/video/uikit/SDL_uikitappdelegate.h src/video/uikit/SDL_uikitappdelegate.m |
diffstat | 2 files changed, 67 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/uikit/SDL_uikitappdelegate.h Tue Jul 22 23:01:01 2008 +0000 +++ b/src/video/uikit/SDL_uikitappdelegate.h Tue Jul 22 23:02:53 2008 +0000 @@ -1,17 +1,34 @@ -// -// SDLUIKitDelegate.h -// iPodSDL -// -// Created by Holmes Futrell on 5/29/08. -// Copyright 2008 __MyCompanyName__. All rights reserved. -// +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org + */ #import <UIKit/UIKit.h> #import "SDL_uikitopenglview.h" -@interface SDLUIKitDelegate : NSObject<UIApplicationDelegate> { - UIWindow *window; - SDL_uikitopenglview *view; +@interface SDLUIKitDelegate:NSObject < UIApplicationDelegate > { + UIWindow *window; } +@property (readwrite, retain) UIWindow *window; + ++(SDLUIKitDelegate *)sharedAppDelegate; + @end
--- a/src/video/uikit/SDL_uikitappdelegate.m Tue Jul 22 23:01:01 2008 +0000 +++ b/src/video/uikit/SDL_uikitappdelegate.m Tue Jul 22 23:02:53 2008 +0000 @@ -1,10 +1,24 @@ -// -// SDLUIKitDelegate.m -// iPodSDL -// -// Created by Holmes Futrell on 5/29/08. -// Copyright 2008 __MyCompanyName__. All rights reserved. -// +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ #import "SDL_uikitappdelegate.h" #import "SDL_uikitopenglview.h" @@ -16,26 +30,24 @@ #undef main #endif -UIWindow *uikitWindow=nil; -SDL_uikitopenglview *uikitEAGLView=nil; - extern int SDL_main(int argc, char *argv[]); static int forward_argc; static char **forward_argv; int main(int argc, char **argv) { + int i; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; /* store arguments */ forward_argc = argc; forward_argv = (char **)malloc(argc * sizeof(char *)); - int i; for (i=0; i<argc; i++) { forward_argv[i] = malloc( (strlen(argv[i])+1) * sizeof(char)); strcpy(forward_argv[i], argv[i]); } + /* Give over control to run loop, SDLUIKitDelegate will handle most things from here */ UIApplicationMain(argc, argv, NULL, @"SDLUIKitDelegate"); [pool release]; @@ -44,6 +56,20 @@ @implementation SDLUIKitDelegate +@synthesize window; + +/* convenience method */ ++(SDLUIKitDelegate *)sharedAppDelegate { + /* the delegate is set in UIApplicationMain(), which is garaunteed to be called before this method */ + return (SDLUIKitDelegate *)[[UIApplication sharedApplication] delegate]; +} + +- (id)init { + self = [super init]; + window = nil; + return self; +} + - (void)applicationDidFinishLaunching:(UIApplication *)application { /* Set working directory to resource path */ @@ -67,13 +93,13 @@ - (void)applicationWillTerminate:(UIApplication *)application { SDL_SendQuit(); - longjmp(*(jump_env()), 1); // hack to prevent automatic termination + /* hack to prevent automatic termination. See SDL_uikitevents.m for details */ + longjmp(*(jump_env()), 1); } -(void)dealloc { - [uikitWindow release]; - [uikitEAGLView release]; + [window release]; [super dealloc]; }