From eaa30182113483299dcf2ef2cb62ec546a790f41 Mon Sep 17 00:00:00 2001 From: Jon Parise Date: Tue, 23 Dec 2025 09:26:06 -0500 Subject: [PATCH] macos: parameterize the termination timeout --- macos/Sources/App/macOS/AppDelegate.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/macos/Sources/App/macOS/AppDelegate.swift b/macos/Sources/App/macOS/AppDelegate.swift index 017a23420..f853e5166 100644 --- a/macos/Sources/App/macOS/AppDelegate.swift +++ b/macos/Sources/App/macOS/AppDelegate.swift @@ -366,15 +366,16 @@ class AppDelegate: NSObject, /// /// We signal all child processes to stop and then wait for them to exit /// (or for our timeout to expire) before terminating the application. - private func terminateGracefully() -> NSApplication.TerminateReply { + private func terminateGracefully( + timeout: DispatchTimeInterval = .milliseconds(500), + ) -> NSApplication.TerminateReply { var surfaces = TerminalController.all.flatMap { $0.surfaceTree } if case .initialized(let controller) = quickTerminalControllerState { surfaces += controller.surfaceTree } surfaces.forEach { $0.stopProcess() } - let deadline = DispatchTime.now() + .milliseconds(500) - let pollInterval: DispatchTimeInterval = .milliseconds(50) + let deadline = DispatchTime.now() + timeout func waitForProcesses() { if surfaces.allSatisfy({ $0.processExited }) { @@ -388,7 +389,7 @@ class AppDelegate: NSObject, return } - DispatchQueue.main.asyncAfter(deadline: .now() + pollInterval) { + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(50)) { waitForProcesses() } }