Improve handling of view loading/unloading

This commit is contained in:
2023-09-26 00:50:25 +02:00
parent 869a9a36a1
commit 3ffbaea37b

View File

@@ -153,10 +153,38 @@ public:
manager = new GraphicsAppManager(app.get(), &window);
manager->StartUp();
OpenVulkanoView* mtkView = (OpenVulkanoView*)(self.view);
if ([self.view isKindOfClass:[MTKView class]]) {
MTKView* mtkView = (MTKView*)(self.view);
mtdelegate = [[MetalViewDelegate alloc] initWithGAM:manager win:&window];
[mtkView setDelegate:mtdelegate];
mtkView.preferredFramesPerSecond = 60;
} else {
_displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(renderLoop)];
[_displayLink setPreferredFramesPerSecond: 60];
[_displayLink addToRunLoop: NSRunLoop.currentRunLoop forMode: NSDefaultRunLoopMode];
}
}
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.view.contentScaleFactor = UIScreen.mainScreen.nativeScale / 1.5f;
auto size = self.view.bounds.size;
auto sizeX = size.width * self.view.contentScaleFactor;
auto sizeY = size.height * self.view.contentScaleFactor;
manager->OnWindowResize(&window, sizeX, sizeY);
}
-(void) viewDidDisappear:(BOOL)animated {
[_displayLink release];
_displayLink = nil;
[super viewDidDisappear:animated];
}
-(void) viewDidUnload {
[_displayLink release];
_displayLink = nil;
[super viewDidUnload];
}
-(void) renderLoop {