diff --git a/BrewBar/BrewBarApp.swift b/BrewBar/BrewBarApp.swift index bbc2211..44b7ecf 100644 --- a/BrewBar/BrewBarApp.swift +++ b/BrewBar/BrewBarApp.swift @@ -194,7 +194,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { try process.run() } catch { self.log("ERROR: \(error)\n") - completion("") + DispatchQueue.main.async { completion("") } return } @@ -204,7 +204,8 @@ class AppDelegate: NSObject, NSApplicationDelegate { let output = String(data: data, encoding: .utf8) ?? "" self.log(output) - completion(output) + // completion always on main: callers update AppKit UI, which is main-thread only + DispatchQueue.main.async { completion(output) } } } @@ -249,14 +250,12 @@ class AppDelegate: NSObject, NSApplicationDelegate { self.cachedOutdated = lines self.lastOutdatedFetch = Date() - DispatchQueue.main.async { - self.updateOutdatedMenu(with: lines) - self.updateStatus(count: lines.count) - if lines.isEmpty { - self.setMenuBarIcon("brewbar-uptodate") - } else { - self.setMenuBarIcon("brewbar-outdated") - } + self.updateOutdatedMenu(with: lines) + self.updateStatus(count: lines.count) + if lines.isEmpty { + self.setMenuBarIcon("brewbar-uptodate") + } else { + self.setMenuBarIcon("brewbar-outdated") } } } @@ -305,10 +304,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { func refreshBrewVersion() { runBrew("--version") { output in let firstLine = BrewParser.parseVersion(output) - - DispatchQueue.main.async { - self.versionItem.title = "🏷 \(firstLine)" - } + self.versionItem.title = "🏷 \(firstLine)" } }