diff options
author | Vincent Bénony | 2015-12-07 14:12:16 +0100 |
---|---|---|
committer | Vincent Bénony | 2016-01-06 16:17:35 +0100 |
commit | e9378ccf3e07fc564daafd5099f95439d7b612a3 (patch) | |
tree | 2e5e264800cebb7653d8719273aabffedff45324 /backends/platform/ios7/iOS7AppDelegate.mm | |
parent | 5b15f06b9299a27be5df028855ee6b592361bdf3 (diff) | |
download | scummvm-rg350-e9378ccf3e07fc564daafd5099f95439d7b612a3.tar.gz scummvm-rg350-e9378ccf3e07fc564daafd5099f95439d7b612a3.tar.bz2 scummvm-rg350-e9378ccf3e07fc564daafd5099f95439d7b612a3.zip |
IOS: Avoid subclassing UIApplication, and handle multitasking
Diffstat (limited to 'backends/platform/ios7/iOS7AppDelegate.mm')
-rw-r--r-- | backends/platform/ios7/iOS7AppDelegate.mm | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/backends/platform/ios7/iOS7AppDelegate.mm b/backends/platform/ios7/iOS7AppDelegate.mm new file mode 100644 index 0000000000..784566228c --- /dev/null +++ b/backends/platform/ios7/iOS7AppDelegate.mm @@ -0,0 +1,85 @@ +// +// Created by Vincent Bénony on 07/12/2015. +// + +#define FORBIDDEN_SYMBOL_ALLOW_ALL +#import "iOS7AppDelegate.h" +#import "iOS7ScummVMViewController.h" +#import "ios7_video.h" + +@implementation iOS7AppDelegate { + UIWindow *_window; + iOS7ScummVMViewController *_controller; + iPhoneView *_view; +} + +- (id)init { + if (self = [super init]) { + _window = nil; + _view = nil; + } + return self; +} + +- (void)mainLoop:(id)param { + @autoreleasepool { + iOS7_main(iOS7_argc, iOS7_argv); + } + + exit(0); +} + +- (void)applicationDidFinishLaunching:(UIApplication *)application { + CGRect rect = [[UIScreen mainScreen] bounds]; + + // Create the directory for savegames +#ifdef IPHONE_OFFICIAL + NSFileManager *fm = [NSFileManager defaultManager]; + NSString *documentPath = [NSString stringWithUTF8String:iOS7_getDocumentsDir()]; + NSString *savePath = [documentPath stringByAppendingPathComponent:@"Savegames"]; + if (![fm fileExistsAtPath:savePath]) { + [fm createDirectoryAtPath:savePath withIntermediateDirectories:YES attributes:nil error:nil]; + } +#endif + + _window = [[UIWindow alloc] initWithFrame:rect]; + [_window retain]; + + _controller = [[iOS7ScummVMViewController alloc] init]; + + _view = [[iPhoneView alloc] initWithFrame:rect]; + _view.multipleTouchEnabled = YES; + _controller.view = _view; + + [_window setRootViewController:_controller]; + [_window makeKeyAndVisible]; + + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(didRotate:) + name:@"UIDeviceOrientationDidChangeNotification" + object:nil]; + + [NSThread detachNewThreadSelector:@selector(mainLoop:) toTarget:self withObject:nil]; +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + [_view applicationSuspend]; +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + [_view applicationResume]; +} + +- (void)didRotate:(NSNotification *)notification { + UIDeviceOrientation screenOrientation = [[UIDevice currentDevice] orientation]; + [_view deviceOrientationChanged:screenOrientation]; +} + +@end + +const char *iOS7_getDocumentsDir() { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + return [documentsDirectory UTF8String]; +} |