From 3eb71c6ed06116485e2e1235d0f48ab4190598ff Mon Sep 17 00:00:00 2001 From: Corbin Crutchley Date: Thu, 17 Sep 2026 15:42:34 -0700 Subject: [PATCH] fix: keep overlay cleanup state on the main thread --- ScreenSlanger/overlay.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ScreenSlanger/overlay.swift b/ScreenSlanger/overlay.swift index 3c3a52c..df9d003 100644 --- a/ScreenSlanger/overlay.swift +++ b/ScreenSlanger/overlay.swift @@ -92,13 +92,13 @@ class OverlayController: NSObject, MTKViewDelegate { } func receiveFrame(contentBuffer: CVPixelBuffer) { - guard !isCleanedUp else { return } - let frameID = self.metrics.newFrameID() self.metrics.recordScreenCapture(frameID: frameID) self.dispatchQueue.async { [weak self] in - guard let self = self, !self.isCleanedUp else { return } + // stopCapture invalidates and drains the callback before cleanup clears + // this queue, so no unsynchronized read of UI state is needed here. + guard let self = self else { return } self.frameID = frameID self.contentBuffer = contentBuffer } -- 2.51.2