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

Merge pull request #75 from ReDetection/experimental-private-queue

experimental: run applescript on separate serial queue
This commit is contained in:
Anton Palgunov 2018-05-13 19:35:28 +01:00 committed by GitHub
commit fd537bcdfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 6 deletions

View File

@ -15,7 +15,7 @@ class AppleScriptTouchBarItem: CustomButtonTouchBarItem {
} }
self.script = script self.script = script
self.isBordered = false self.isBordered = false
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

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