aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ios7
diff options
context:
space:
mode:
authorVincent Bénony2015-12-07 14:12:16 +0100
committerVincent Bénony2016-01-06 16:17:35 +0100
commite9378ccf3e07fc564daafd5099f95439d7b612a3 (patch)
tree2e5e264800cebb7653d8719273aabffedff45324 /backends/platform/ios7
parent5b15f06b9299a27be5df028855ee6b592361bdf3 (diff)
downloadscummvm-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')
-rw-r--r--backends/platform/ios7/iOS7AppDelegate.h9
-rw-r--r--backends/platform/ios7/iOS7AppDelegate.mm (renamed from backends/platform/ios7/iOS7MainApplication.mm)70
-rw-r--r--backends/platform/ios7/iOS7MainApplication.h39
-rw-r--r--backends/platform/ios7/ios7_main.mm2
-rw-r--r--backends/platform/ios7/ios7_osys_events.cpp32
-rw-r--r--backends/platform/ios7/ios7_osys_main.cpp2
-rw-r--r--backends/platform/ios7/ios7_osys_main.h4
-rw-r--r--backends/platform/ios7/module.mk2
8 files changed, 56 insertions, 104 deletions
diff --git a/backends/platform/ios7/iOS7AppDelegate.h b/backends/platform/ios7/iOS7AppDelegate.h
new file mode 100644
index 0000000000..49411698c1
--- /dev/null
+++ b/backends/platform/ios7/iOS7AppDelegate.h
@@ -0,0 +1,9 @@
+//
+// Created by Vincent Bénony on 07/12/2015.
+//
+
+#import <UIKit/UIKit.h>
+
+
+@interface iOS7AppDelegate : NSObject<UIApplicationDelegate>
+@end
diff --git a/backends/platform/ios7/iOS7MainApplication.mm b/backends/platform/ios7/iOS7AppDelegate.mm
index c21c017174..784566228c 100644
--- a/backends/platform/ios7/iOS7MainApplication.mm
+++ b/backends/platform/ios7/iOS7AppDelegate.mm
@@ -1,40 +1,23 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-
-#import "iOS7MainApplication.h"
-#import "iOS7ScummVMViewController.h"
+//
+// Created by Vincent Bénony on 07/12/2015.
+//
#define FORBIDDEN_SYMBOL_ALLOW_ALL
-#import "ios7_common.h"
+#import "iOS7AppDelegate.h"
+#import "iOS7ScummVMViewController.h"
#import "ios7_video.h"
+@implementation iOS7AppDelegate {
+ UIWindow *_window;
+ iOS7ScummVMViewController *_controller;
+ iPhoneView *_view;
+}
-@implementation iOS7MainApplication
-
--(id)init {
- [super init];
- _window = nil;
- _view = nil;
+- (id)init {
+ if (self = [super init]) {
+ _window = nil;
+ _view = nil;
+ }
return self;
}
@@ -46,10 +29,6 @@
exit(0);
}
-- (iPhoneView *)getView {
- return _view;
-}
-
- (void)applicationDidFinishLaunching:(UIApplication *)application {
CGRect rect = [[UIScreen mainScreen] bounds];
@@ -84,21 +63,11 @@
[NSThread detachNewThreadSelector:@selector(mainLoop:) toTarget:self withObject:nil];
}
-- (void)applicationDidResume {
-}
-
-- (void)applicationWillSuspend {
-}
-
-- (void)applicationWillTerminate {
-}
-
-- (void)applicationSuspend:(struct __GSEvent *)event {
- //[self setApplicationBadge:NSLocalizedString(@"ON", nil)];
+- (void)applicationDidEnterBackground:(UIApplication *)application {
[_view applicationSuspend];
}
-- (void)applicationResume:(struct __GSEvent *)event {
+- (void)applicationWillEnterForeground:(UIApplication *)application {
[_view applicationResume];
}
@@ -107,13 +76,8 @@
[_view deviceOrientationChanged:screenOrientation];
}
-- (UIWindow*) getWindow {
- return _window;
-}
-
@end
-
const char *iOS7_getDocumentsDir() {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
diff --git a/backends/platform/ios7/iOS7MainApplication.h b/backends/platform/ios7/iOS7MainApplication.h
deleted file mode 100644
index a47f5da9ce..0000000000
--- a/backends/platform/ios7/iOS7MainApplication.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-
-#import <UIKit/UIKit.h>
-
-@class iOS7ScummVMViewController;
-@class iPhoneView;
-
-@interface iOS7MainApplication : UIApplication {
- UIWindow *_window;
- iOS7ScummVMViewController *_controller;
- iPhoneView *_view;
-}
-
-- (void)mainLoop:(id)param;
-- (iPhoneView *)getView;
-- (UIWindow *)getWindow;
-- (void)didRotate:(NSNotification *)notification;
-@end
diff --git a/backends/platform/ios7/ios7_main.mm b/backends/platform/ios7/ios7_main.mm
index c6ca14d490..96f41f4c02 100644
--- a/backends/platform/ios7/ios7_main.mm
+++ b/backends/platform/ios7/ios7_main.mm
@@ -39,7 +39,7 @@ int main(int argc, char **argv) {
iOS7_argc = argc;
iOS7_argv = argv;
- returnCode = UIApplicationMain(argc, argv, @"iOS7MainApplication", @"iOS7MainApplication");
+ returnCode = UIApplicationMain(argc, argv, @"UIApplication", @"iOS7AppDelegate");
}
return returnCode;
diff --git a/backends/platform/ios7/ios7_osys_events.cpp b/backends/platform/ios7/ios7_osys_events.cpp
index da44983b03..7e805f34b7 100644
--- a/backends/platform/ios7/ios7_osys_events.cpp
+++ b/backends/platform/ios7/ios7_osys_events.cpp
@@ -68,12 +68,14 @@ bool OSystem_iOS7::pollEvent(Common::Event &event) {
case kInputOrientationChanged:
handleEvent_orientationChanged(internalEvent.value1);
return false;
- break;
case kInputApplicationSuspended:
- suspendLoop();
+ handleEvent_applicationSuspended();
+ return false;
+
+ case kInputApplicationResumed:
+ handleEvent_applicationResumed();
return false;
- break;
case kInputMouseSecondDragged:
if (!handleEvent_mouseSecondDragged(event, internalEvent.value1, internalEvent.value2))
@@ -353,16 +355,28 @@ void OSystem_iOS7::handleEvent_orientationChanged(int orientation) {
return;
}
-
if (_screenOrientation != newOrientation) {
_screenOrientation = newOrientation;
- updateOutputSurface();
+ rebuildSurface();
+ }
+}
- dirtyFullScreen();
- if (_videoContext->overlayVisible)
+void OSystem_iOS7::rebuildSurface() {
+ updateOutputSurface();
+
+ dirtyFullScreen();
+ if (_videoContext->overlayVisible) {
dirtyFullOverlayScreen();
- updateScreen();
- }
+ }
+ updateScreen();
+}
+
+void OSystem_iOS7::handleEvent_applicationSuspended() {
+ suspendLoop();
+}
+
+void OSystem_iOS7::handleEvent_applicationResumed() {
+ rebuildSurface();
}
void OSystem_iOS7::handleEvent_keyPressed(Common::Event &event, int keyPressed) {
diff --git a/backends/platform/ios7/ios7_osys_main.cpp b/backends/platform/ios7/ios7_osys_main.cpp
index 84ddff26df..a58aa10340 100644
--- a/backends/platform/ios7/ios7_osys_main.cpp
+++ b/backends/platform/ios7/ios7_osys_main.cpp
@@ -339,6 +339,6 @@ void iOS7_main(int argc, char **argv) {
assert(g_system);
// Invoke the actual ScummVM main entry point:
- scummvm_main(argc, argv);
+ scummvm_main(argc, (const char *const *) argv);
g_system->quit(); // TODO: Consider removing / replacing this!
}
diff --git a/backends/platform/ios7/ios7_osys_main.h b/backends/platform/ios7/ios7_osys_main.h
index 50114a9112..26b147e2a1 100644
--- a/backends/platform/ios7/ios7_osys_main.h
+++ b/backends/platform/ios7/ios7_osys_main.h
@@ -210,6 +210,8 @@ protected:
bool handleEvent_tap(Common::Event &event, UIViewTapDescription type, int touches);
void handleEvent_keyPressed(Common::Event &event, int keyPressed);
void handleEvent_orientationChanged(int orientation);
+ void handleEvent_applicationSuspended();
+ void handleEvent_applicationResumed();
bool handleEvent_mouseDown(Common::Event &event, int x, int y);
bool handleEvent_mouseUp(Common::Event &event, int x, int y);
@@ -219,6 +221,8 @@ protected:
bool handleEvent_mouseDragged(Common::Event &event, int x, int y);
bool handleEvent_mouseSecondDragged(Common::Event &event, int x, int y);
+
+ void rebuildSurface();
};
#endif
diff --git a/backends/platform/ios7/module.mk b/backends/platform/ios7/module.mk
index fad69d715e..5ee4c7a601 100644
--- a/backends/platform/ios7/module.mk
+++ b/backends/platform/ios7/module.mk
@@ -9,7 +9,7 @@ MODULE_OBJS := \
ios7_video.o \
ios7_keyboard.o \
iOS7ScummVMViewController.o \
- iOS7MainApplication.o
+ iOS7AppDelegate.o
# We don't use rules.mk but rather manually update OBJS and MODULE_DIRS.
MODULE_OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS))