1
0
mirror of https://github.com/Toxblh/MTMR.git synced 2026-01-11 17:38:38 +00:00

experimental: run applescript on separate serial queue

This commit is contained in:
Serg 2018-05-12 11:11:53 +07:00
parent b73f8865a9
commit e9c69f6461
2 changed files with 15 additions and 6 deletions

View File

@ -15,7 +15,7 @@ class AppleScriptTouchBarItem: CustomButtonTouchBarItem {
} }
self.script = script self.script = script
button.bezelColor = .clear button.bezelColor = .clear
DispatchQueue.main.async { DispatchQueue.appleScriptQueue.async {
var error: NSDictionary? var error: NSDictionary?
guard script.compileAndReturnError(&error) else { guard script.compileAndReturnError(&error) else {
#if DEBUG #if DEBUG
@ -42,8 +42,11 @@ class AppleScriptTouchBarItem: CustomButtonTouchBarItem {
DispatchQueue.main.async { DispatchQueue.main.async {
self.title = scriptResult self.title = scriptResult
self.forceHideConstraint.isActive = scriptResult == "" self.forceHideConstraint.isActive = scriptResult == ""
#if DEBUG
print("did set new script result title \(scriptResult)")
#endif
} }
DispatchQueue.main.asyncAfter(deadline: .now() + self.interval) { [weak self] in DispatchQueue.appleScriptQueue.asyncAfter(deadline: .now() + self.interval) { [weak self] in
self?.refreshAndSchedule() self?.refreshAndSchedule()
} }
} }
@ -66,3 +69,7 @@ extension SourceProtocol {
return NSAppleScript(source: source) return NSAppleScript(source: source)
} }
} }
extension DispatchQueue {
static let appleScriptQueue = DispatchQueue(label: "mtmr.applescript")
}

View File

@ -262,12 +262,14 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
return {} return {}
} }
return { return {
DispatchQueue.appleScriptQueue.async {
var error: NSDictionary? var error: NSDictionary?
appleScript.executeAndReturnError(&error) appleScript.executeAndReturnError(&error)
if let error = error { if let error = error {
print("error \(error) when handling \(item) ") print("error \(error) when handling \(item) ")
} }
} }
}
case .shellScript(executable: let executable, parameters: let parameters): case .shellScript(executable: let executable, parameters: let parameters):
return { return {
let task = Process() let task = Process()