diff options
| author | Andre Weissflog <floooh@gmail.com> | 2020-11-15 16:50:12 +0100 |
|---|---|---|
| committer | Andre Weissflog <floooh@gmail.com> | 2020-11-15 16:50:12 +0100 |
| commit | 8d042b5862bda588e3f8bcd264d6acc495e4edeb (patch) | |
| tree | 8c836e4051c51b4e22b2ab37068076c96c5a58d3 /sokol_app.h | |
| parent | b693b8b5222244bff174d912a0a4192ddbe00d30 (diff) | |
sokol_app.h macOS/Metal: disable MTKView.autoResizeDrawable, fixes #419
Diffstat (limited to 'sokol_app.h')
| -rw-r--r-- | sokol_app.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sokol_app.h b/sokol_app.h index 645dd177..aa67a216 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -2826,9 +2826,9 @@ _SOKOL_PRIVATE void _sapp_macos_app_event(sapp_event_type type) { _SOKOL_PRIVATE void _sapp_macos_update_dimensions(void) { #if defined(SOKOL_METAL) - const CGSize fb_size = [_sapp.macos.view drawableSize]; - _sapp.framebuffer_width = fb_size.width; - _sapp.framebuffer_height = fb_size.height; + const NSRect fb_rect = [_sapp.macos.view bounds]; + _sapp.framebuffer_width = fb_rect.size.width * _sapp.dpi_scale; + _sapp.framebuffer_height = fb_rect.size.height * _sapp.dpi_scale; #elif defined(SOKOL_GLCORE33) const NSRect fb_rect = [_sapp.macos.view convertRectToBacking:[_sapp.macos.view frame]]; _sapp.framebuffer_width = fb_rect.size.width; @@ -2850,6 +2850,12 @@ _SOKOL_PRIVATE void _sapp_macos_update_dimensions(void) { _sapp.window_height = 1; } _sapp.dpi_scale = (float)_sapp.framebuffer_width / (float)_sapp.window_width; + + /* also make sure the MTKView drawable size is uptodate */ + #if defined(SOKOL_METAL) + CGSize drawable_size = { (CGFloat) _sapp.framebuffer_width, (CGFloat) _sapp.framebuffer_height }; + _sapp.macos.view.drawableSize = drawable_size; + #endif } _SOKOL_PRIVATE void _sapp_macos_toggle_fullscreen(void) { @@ -2997,12 +3003,9 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) { _sapp.macos.view.colorPixelFormat = MTLPixelFormatBGRA8Unorm; _sapp.macos.view.depthStencilPixelFormat = MTLPixelFormatDepth32Float_Stencil8; _sapp.macos.view.sampleCount = _sapp.sample_count; + _sapp.macos.view.autoResizeDrawable = false; _sapp.macos.window.contentView = _sapp.macos.view; [_sapp.macos.window makeFirstResponder:_sapp.macos.view]; - if (!_sapp.desc.high_dpi) { - CGSize drawable_size = { (CGFloat) _sapp.framebuffer_width, (CGFloat) _sapp.framebuffer_height }; - _sapp.macos.view.drawableSize = drawable_size; - } _sapp.macos.view.layer.magnificationFilter = kCAFilterNearest; #elif defined(SOKOL_GLCORE33) NSOpenGLPixelFormatAttribute attrs[32]; |