From c18aa4d91cf31bb5af529f6c0f290fe3e94d40a0 Mon Sep 17 00:00:00 2001 From: Louis Pontoise Date: Thu, 29 Jul 2021 12:49:17 +0900 Subject: [PATCH] fix: fix situations from some crash reports --- src/logic/SystemPermissions.swift | 2 +- src/logic/events/KeyboardEvents.swift | 8 ++++++-- src/logic/events/MouseEvents.swift | 10 +++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) 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? {