diff --git a/src/renderer/metal/IOSurfaceLayer.zig b/src/renderer/metal/IOSurfaceLayer.zig index 34fbfbed5..cd97126a4 100644 --- a/src/renderer/metal/IOSurfaceLayer.zig +++ b/src/renderer/metal/IOSurfaceLayer.zig @@ -40,6 +40,10 @@ pub fn init() !IOSurfaceLayer { } pub fn release(self: *IOSurfaceLayer) void { + // The layer may be retained by the view after we release our reference. + // Clear the callback first so that a later display pass can't access the + // renderer that owned this wrapper after it has been freed. + self.setDisplayCallback(null, null); self.layer.release(); }