Fix crash on background on iOS
This commit is contained in:
@@ -5,21 +5,19 @@
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import <MetalKit/MTKView.h>
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark OpenVulkanoViewController
|
||||
|
||||
/** The main view controller for the demo storyboard. */
|
||||
@interface OpenVulkanoViewController : UIViewController
|
||||
-(void*) makeGraphicsApp;
|
||||
@end
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
#pragma mark OpenVulkanoView
|
||||
|
||||
/** The Metal-compatibile view for the demo Storyboard. */
|
||||
@interface DemoView : UIView
|
||||
@interface OpenVulkanoView : MTKView
|
||||
@end
|
||||
|
||||
|
||||
@@ -83,11 +83,38 @@ public:
|
||||
void Close() override {}
|
||||
};
|
||||
|
||||
@interface MetalViewDelegate : NSObject<MTKViewDelegate>
|
||||
- (id)initWithGAM:(GraphicsAppManager*)gam;
|
||||
- (void) mtkView:(MTKView *) view drawableSizeWillChange:(CGSize) size;
|
||||
- (void) drawInMTKView:(MTKView *) view;
|
||||
@end
|
||||
|
||||
@implementation MetalViewDelegate
|
||||
{
|
||||
GraphicsAppManager* manager;
|
||||
}
|
||||
|
||||
- (id)initWithGAM:(GraphicsAppManager*)gam
|
||||
{
|
||||
manager = gam;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) mtkView:(MTKView *) view drawableSizeWillChange:(CGSize) size
|
||||
{}
|
||||
|
||||
- (void) drawInMTKView:(MTKView *) view
|
||||
{
|
||||
manager->LoopTick();
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation OpenVulkanoViewController {
|
||||
CADisplayLink* _displayLink;
|
||||
GraphicsAppManager* manager;
|
||||
ViewWindow window;
|
||||
std::unique_ptr<IGraphicsApp> app;
|
||||
MetalViewDelegate* mtdelegate;
|
||||
}
|
||||
|
||||
-(void*) makeGraphicsApp {
|
||||
@@ -117,9 +144,10 @@ public:
|
||||
manager = new GraphicsAppManager(app.get(), &window);
|
||||
manager->StartUp();
|
||||
|
||||
_displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(renderLoop)];
|
||||
[_displayLink setPreferredFramesPerSecond: 60];
|
||||
[_displayLink addToRunLoop: NSRunLoop.currentRunLoop forMode: NSDefaultRunLoopMode];
|
||||
OpenVulkanoView* mtkView = (OpenVulkanoView*)(self.view);
|
||||
mtdelegate = [[MetalViewDelegate alloc] initWithGAM:manager];
|
||||
[mtkView setDelegate:mtdelegate];
|
||||
mtkView.preferredFramesPerSecond = 60;
|
||||
}
|
||||
|
||||
-(void) renderLoop {
|
||||
@@ -139,9 +167,9 @@ public:
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark DemoView
|
||||
#pragma mark OpenVulkanoView
|
||||
|
||||
@implementation DemoView
|
||||
@implementation OpenVulkanoView
|
||||
|
||||
/** Returns a Metal-compatible layer. */
|
||||
+(Class) layerClass { return [CAMetalLayer class]; }
|
||||
|
||||
Reference in New Issue
Block a user