perf: prevent possible frequent permissions check

This commit is contained in:
lwouis committed 2026-02-11 21:35:38 +01:00
1 parent 3f2f391c93
commit 216563b635
2 files changed
+12 -4

No files matched your search

+9
View File
@@ -5,6 +5,7 @@ import ScreenCaptureKit.SCShareableContent
class SystemPermissions {
static var preStartupPermissionsPassed = false
private static var timer: DispatchSourceTimer!
private static var timerIsFrequent = false
static func ensurePermissionsAreGranted() {
timer = DispatchSource.makeTimerSource(queue: BackgroundWork.permissionsCheckOnTimerQueue.strongUnderlyingQueue)
@@ -23,6 +24,11 @@ class SystemPermissions {
checkPermissionsPreStartup()
} else {
checkPermissionsPostStartup()
if App.app.permissionsWindow.isVisible && !timerIsFrequent {
setFrequentTimer()
} else if !App.app.permissionsWindow.isVisible && timerIsFrequent {
setInfrequentTimer()
}
}
DispatchQueue.main.async {
Menubar.togglePermissionCallout(ScreenRecordingPermission.status != .granted)
@@ -53,14 +59,17 @@ class SystemPermissions {
}
static func setInfrequentTimer() {
timerIsFrequent = false
timer.schedule(deadline: .now() + 5, repeating: 5, leeway: .seconds(1))
}
static func setFrequentTimer() {
timerIsFrequent = true
timer.schedule(deadline: .now(), repeating: 0.5, leeway: .milliseconds(500))
}
private static func setImmediateTimer() {
timerIsFrequent = false
timer.schedule(deadline: .now(), repeating: .never, leeway: .never)
}
}
@@ -7,7 +7,7 @@ class PermissionsWindow: NSWindow {
override var canBecomeKey: Bool { canBecomeKey_ }
convenience init() {
self.init(contentRect: .zero, styleMask: [.titled, .miniaturizable, .closable], backing: .buffered, defer: false)
self.init(contentRect: .zero, styleMask: [.titled, .closable], backing: .buffered, defer: false)
delegate = self
setupWindow()
setupView()
@@ -16,10 +16,10 @@ class PermissionsWindow: NSWindow {
func show() {
guard !isVisible else { return }
Logger.debug { "" }
SystemPermissions.setFrequentTimer()
center()
App.shared.activate(ignoringOtherApps: true)
makeKeyAndOrderFront(nil)
SystemPermissions.setFrequentTimer()
}
func updatePermissionViews() {
@@ -33,7 +33,7 @@ class PermissionsWindow: NSWindow {
title = NSLocalizedString("AltTab needs some permissions", comment: "")
hidesOnDeactivate = false
isReleasedWhenClosed = false
styleMask.insert([.miniaturizable, .closable])
styleMask.insert([.closable])
}
private func setupView() {
@@ -99,7 +99,6 @@ extension PermissionsWindow: NSWindowDelegate {
return false // prevent the close; termination will close everything once
}
}
SystemPermissions.setInfrequentTimer()
return true
}
}