From c022018ec45ff31dc21f668b6427b6e4ca61ef47 Mon Sep 17 00:00:00 2001 From: Serg Date: Mon, 9 Apr 2018 23:23:06 +0700 Subject: [PATCH] workaround for NSAppleScript not being thread safe :( --- MTMR/AppleScriptTouchBarItem.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/MTMR/AppleScriptTouchBarItem.swift b/MTMR/AppleScriptTouchBarItem.swift index a90c154..a48c9e6 100644 --- a/MTMR/AppleScriptTouchBarItem.swift +++ b/MTMR/AppleScriptTouchBarItem.swift @@ -1,10 +1,9 @@ import Foundation class AppleScriptTouchBarItem: NSCustomTouchBarItem { - private let script: NSAppleScript - private let queue = DispatchQueue(label: "apple script touchbar queue", qos: .utility, attributes: [], autoreleaseFrequency: .workItem, target: nil) - private let interval: TimeInterval + private let script: NSAppleScript! private let button = NSButton(title: "", target: nil, action: nil) + private let interval: TimeInterval init?(identifier: NSTouchBarItem.Identifier, appleScript: String, interval: TimeInterval) { guard let script = NSAppleScript(source: appleScript) else { @@ -16,7 +15,7 @@ class AppleScriptTouchBarItem: NSCustomTouchBarItem { self.view = button button.bezelColor = .clear button.title = "compile" - queue.async { + DispatchQueue.main.async { var error: NSDictionary? guard script.compileAndReturnError(&error) else { print(error?.description ?? "unknown error") @@ -39,7 +38,7 @@ class AppleScriptTouchBarItem: NSCustomTouchBarItem { DispatchQueue.main.async { self.button.title = scriptResult } - queue.asyncAfter(deadline: .now() + self.interval) { [weak self] in + DispatchQueue.main.asyncAfter(deadline: .now() + self.interval) { [weak self] in self?.refreshAndSchedule() } }