From e9378ccf3e07fc564daafd5099f95439d7b612a3 Mon Sep 17 00:00:00 2001 From: Vincent Bénony Date: Mon, 7 Dec 2015 14:12:16 +0100 Subject: IOS: Avoid subclassing UIApplication, and handle multitasking --- backends/platform/ios7/iOS7AppDelegate.mm | 85 +++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 backends/platform/ios7/iOS7AppDelegate.mm (limited to 'backends/platform/ios7/iOS7AppDelegate.mm') 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]; +} -- cgit v1.2.3 From dd950fdb22dcc3d4be06ed416c09b6fb438144c4 Mon Sep 17 00:00:00 2001 From: Vincent Bénony Date: Tue, 8 Dec 2015 11:04:04 +0100 Subject: IOS: Removes a global variable --- backends/platform/ios7/iOS7AppDelegate.mm | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'backends/platform/ios7/iOS7AppDelegate.mm') diff --git a/backends/platform/ios7/iOS7AppDelegate.mm b/backends/platform/ios7/iOS7AppDelegate.mm index 784566228c..0f645e5055 100644 --- a/backends/platform/ios7/iOS7AppDelegate.mm +++ b/backends/platform/ios7/iOS7AppDelegate.mm @@ -76,6 +76,16 @@ [_view deviceOrientationChanged:screenOrientation]; } ++ (iOS7AppDelegate *)iOS7AppDelegate { + UIApplication *app = [UIApplication sharedApplication]; + return (iOS7AppDelegate *) app.delegate; +} + ++ (iPhoneView *)iPhoneView { + iOS7AppDelegate *appDelegate = [self iOS7AppDelegate]; + return appDelegate->_view; +} + @end const char *iOS7_getDocumentsDir() { -- cgit v1.2.3 From cfcd3842ed0b46c1eeb7d1e490a882e5d3f26441 Mon Sep 17 00:00:00 2001 From: Vincent Bénony Date: Thu, 10 Dec 2015 18:44:31 +0100 Subject: IOS: Adds iPhone 6/6+ launch screens --- backends/platform/ios7/iOS7AppDelegate.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'backends/platform/ios7/iOS7AppDelegate.mm') diff --git a/backends/platform/ios7/iOS7AppDelegate.mm b/backends/platform/ios7/iOS7AppDelegate.mm index 0f645e5055..d664f91ccc 100644 --- a/backends/platform/ios7/iOS7AppDelegate.mm +++ b/backends/platform/ios7/iOS7AppDelegate.mm @@ -30,7 +30,7 @@ } - (void)applicationDidFinishLaunching:(UIApplication *)application { - CGRect rect = [[UIScreen mainScreen] bounds]; + CGRect rect = [[UIScreen mainScreen] bounds]; // Create the directory for savegames #ifdef IPHONE_OFFICIAL @@ -63,11 +63,11 @@ [NSThread detachNewThreadSelector:@selector(mainLoop:) toTarget:self withObject:nil]; } -- (void)applicationDidEnterBackground:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication *)application { [_view applicationSuspend]; } -- (void)applicationWillEnterForeground:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication *)application { [_view applicationResume]; } -- cgit v1.2.3 From b5ef98637c54a453a6f0ac0ca8c501ceb59924d5 Mon Sep 17 00:00:00 2001 From: Vincent Bénony Date: Thu, 7 Jan 2016 09:51:13 +0100 Subject: IOS: Renames a macro --- backends/platform/ios7/iOS7AppDelegate.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backends/platform/ios7/iOS7AppDelegate.mm') diff --git a/backends/platform/ios7/iOS7AppDelegate.mm b/backends/platform/ios7/iOS7AppDelegate.mm index d664f91ccc..e9908ec146 100644 --- a/backends/platform/ios7/iOS7AppDelegate.mm +++ b/backends/platform/ios7/iOS7AppDelegate.mm @@ -32,8 +32,8 @@ - (void)applicationDidFinishLaunching:(UIApplication *)application { CGRect rect = [[UIScreen mainScreen] bounds]; +#ifdef IPHONE_SANDBOXED // Create the directory for savegames -#ifdef IPHONE_OFFICIAL NSFileManager *fm = [NSFileManager defaultManager]; NSString *documentPath = [NSString stringWithUTF8String:iOS7_getDocumentsDir()]; NSString *savePath = [documentPath stringByAppendingPathComponent:@"Savegames"]; -- cgit v1.2.3