diff --git a/src/util/metal_device.mm b/src/util/metal_device.mm index a8d23cbfbb..12618553f6 100644 --- a/src/util/metal_device.mm +++ b/src/util/metal_device.mm @@ -394,11 +394,12 @@ static void RunOnMainThread(F&& f) @autoreleasepool { - id drawable = [m_layer nextDrawable]; + id drawable = [[m_layer nextDrawable] retain]; m_layer_pass_desc.colorAttachments[0].texture = [drawable texture]; id encoder = [m_render_cmdbuf renderCommandEncoderWithDescriptor:m_layer_pass_desc]; [encoder endEncoding]; [m_render_cmdbuf presentDrawable:drawable]; + DeferRelease(drawable); SubmitCommandBuffer(); } } @@ -2019,7 +2020,7 @@ static void DumpShader(u32 n, const std::string_view& suffix, const std::string_ EndAnyEncoding(); [m_render_cmdbuf presentDrawable:m_layer_drawable]; - [m_layer_drawable release]; + DeferRelease(m_layer_drawable); m_layer_drawable = nil; SubmitCommandBuffer(); TrimTexturePool();