From f14f397c9962ce7bb489d607aaa834db68661ac7 Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Wed, 15 Mar 2023 18:51:50 +0100 Subject: [PATCH] [mtl surface] don't re-acquire drawable if there's already a valid one acquired --- src/mtl_surface.m | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/mtl_surface.m b/src/mtl_surface.m index 9575da0..4700853 100644 --- a/src/mtl_surface.m +++ b/src/mtl_surface.m @@ -64,14 +64,19 @@ void mg_mtl_surface_acquire_drawable_and_command_buffer(mg_mtl_surface* surface) */ //NOTE: returned drawable could be nil if we stall for more than 1s, although that never seem to happen in practice? - surface->drawable = [surface->mtlLayer nextDrawable]; - if(surface->drawable) + if(surface->drawable == nil) { - [surface->drawable retain]; + surface->drawable = [surface->mtlLayer nextDrawable]; + if(surface->drawable) + { + [surface->drawable retain]; + } + } + if(surface->commandBuffer == nil) + { + surface->commandBuffer = [surface->commandQueue commandBuffer]; + [surface->commandBuffer retain]; } - - surface->commandBuffer = [surface->commandQueue commandBuffer]; - [surface->commandBuffer retain]; }} void mg_mtl_surface_prepare(mg_surface_data* interface)