aboutsummaryrefslogtreecommitdiff
path: root/cube/macOS/cubepp
diff options
context:
space:
mode:
Diffstat (limited to 'cube/macOS/cubepp')
-rw-r--r--cube/macOS/cubepp/AppDelegate.mm11
-rw-r--r--cube/macOS/cubepp/DemoViewController.h3
-rw-r--r--cube/macOS/cubepp/DemoViewController.mm8
3 files changed, 19 insertions, 3 deletions
diff --git a/cube/macOS/cubepp/AppDelegate.mm b/cube/macOS/cubepp/AppDelegate.mm
index 2a7bcaff..c1ee96b4 100644
--- a/cube/macOS/cubepp/AppDelegate.mm
+++ b/cube/macOS/cubepp/AppDelegate.mm
@@ -17,6 +17,7 @@
*/
#import "AppDelegate.h"
+#import "DemoViewController.h"
@interface AppDelegate ()
@@ -29,7 +30,15 @@
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
- // Insert code here to tear down your application
+ NSApplication *app = aNotification.object;
+ NSArray<NSWindow *> *windows = app.windows;
+ for (NSUInteger i = 0; i < windows.count; ++i) {
+ NSViewController *viewController = windows[i].contentViewController;
+ if ([viewController isKindOfClass:[DemoViewController class]]) {
+ [(DemoViewController *)viewController quit];
+ break;
+ }
+ }
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
diff --git a/cube/macOS/cubepp/DemoViewController.h b/cube/macOS/cubepp/DemoViewController.h
index 7f90cc7e..6d7ca215 100644
--- a/cube/macOS/cubepp/DemoViewController.h
+++ b/cube/macOS/cubepp/DemoViewController.h
@@ -23,6 +23,9 @@
/** The main view controller for the demo storyboard. */
@interface DemoViewController : NSViewController
+
+- (void)quit;
+
@end
#pragma mark -
diff --git a/cube/macOS/cubepp/DemoViewController.mm b/cube/macOS/cubepp/DemoViewController.mm
index 9e003b9b..7bc4681f 100644
--- a/cube/macOS/cubepp/DemoViewController.mm
+++ b/cube/macOS/cubepp/DemoViewController.mm
@@ -33,11 +33,15 @@
}
- (void)dealloc {
- demo.cleanup();
- CVDisplayLinkRelease(_displayLink);
+ [self quit];
[super dealloc];
}
+- (void)quit {
+ CVDisplayLinkRelease(_displayLink);
+ demo.cleanup();
+}
+
/** Since this is a single-view app, initialize Vulkan during view loading. */
- (void)viewDidLoad {
[super viewDidLoad];