diff --git a/src/logic/SystemPermissions.swift b/src/logic/SystemPermissions.swift index 20980d21..dff70d8f 100644 --- a/src/logic/SystemPermissions.swift +++ b/src/logic/SystemPermissions.swift @@ -68,7 +68,7 @@ class SystemPermissions { DispatchQueue.main.async { if accessibility && screenRecording { timer.invalidate() - permissionsWindow.close() + permissionsWindow?.close() startupBlock() } else { if accessibility != permissionsWindow.accessibilityView.isPermissionGranted { diff --git a/src/logic/events/KeyboardEvents.swift b/src/logic/events/KeyboardEvents.swift index 129bea79..92d38bc1 100644 --- a/src/logic/events/KeyboardEvents.swift +++ b/src/logic/events/KeyboardEvents.swift @@ -83,8 +83,12 @@ class KeyboardEvents { eventsOfInterest: eventMask, callback: cgEventFlagsChangedHandler, userInfo: nil) - let runLoopSource = CFMachPortCreateRunLoopSource(nil, eventTap, 0) - CFRunLoopAddSource(CFRunLoopGetMain(), runLoopSource, .commonModes) + if let eventTap = eventTap { + let runLoopSource = CFMachPortCreateRunLoopSource(nil, eventTap, 0) + CFRunLoopAddSource(CFRunLoopGetMain(), runLoopSource, .commonModes) + } else { + App.app.restart() + } } private static func addGlobalHandlerIfNeeded(_ shortcut: Shortcut) { diff --git a/src/logic/events/MouseEvents.swift b/src/logic/events/MouseEvents.swift index 89f2d635..59c98401 100644 --- a/src/logic/events/MouseEvents.swift +++ b/src/logic/events/MouseEvents.swift @@ -28,9 +28,13 @@ private func observe_() { eventsOfInterest: eventMask, callback: mouseHandler, userInfo: nil) - MouseEvents.toggle(false) - let runLoopSource = CFMachPortCreateRunLoopSource(nil, eventTap, 0) - CFRunLoopAddSource(BackgroundWork.mouseEventsThread.runLoop, runLoopSource, .commonModes) + if let eventTap = eventTap { + MouseEvents.toggle(false) + let runLoopSource = CFMachPortCreateRunLoopSource(nil, eventTap, 0) + CFRunLoopAddSource(BackgroundWork.mouseEventsThread.runLoop, runLoopSource, .commonModes) + } else { + App.app.restart() + } } private func mouseHandler(proxy: CGEventTapProxy, type: CGEventType, cgEvent: CGEvent, userInfo: UnsafeMutableRawPointer?) -> Unmanaged? {