mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-21 22:07:49 +00:00
Only poll the ZeroTier service when the menu or Network List are visible. Reduces CPU idle prevention by a a LOT
This commit is contained in:
parent
b9a4d138fc
commit
78e5a00a68
@ -9,7 +9,7 @@
|
||||
import Cocoa
|
||||
|
||||
@NSApplicationMain
|
||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
|
||||
|
||||
@IBOutlet weak var window: NSWindow!
|
||||
|
||||
@ -85,6 +85,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
self.showAbout()
|
||||
}
|
||||
}
|
||||
|
||||
monitor.updateNetworkInfo()
|
||||
}
|
||||
|
||||
func applicationWillTerminate(aNotification: NSNotification) {
|
||||
@ -181,6 +183,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
|
||||
func buildMenu() {
|
||||
let menu = NSMenu()
|
||||
menu.delegate = self
|
||||
|
||||
if let s = self.status {
|
||||
menu.addItem(NSMenuItem(title: "Node ID: \(s.address)", action: #selector(AppDelegate.copyNodeID), keyEquivalent: ""))
|
||||
@ -230,7 +233,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
menu.addItem(NSMenuItem(title: "Quit ZeroTier One", action: #selector(AppDelegate.quit), keyEquivalent: "q"))
|
||||
|
||||
statusItem.menu = menu
|
||||
|
||||
}
|
||||
|
||||
func toggleNetwork(sender: NSMenuItem) {
|
||||
@ -253,5 +255,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
pasteboard.setString(s.address, forType: NSPasteboardTypeString)
|
||||
}
|
||||
}
|
||||
|
||||
func menuWillOpen(menu: NSMenu) {
|
||||
monitor.start()
|
||||
}
|
||||
|
||||
func menuDidClose(menu: NSMenu) {
|
||||
monitor.stop()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,14 @@ class NetworkMonitor: NSObject {
|
||||
|
||||
override init() {
|
||||
super.init()
|
||||
}
|
||||
|
||||
deinit {
|
||||
timer?.invalidate()
|
||||
}
|
||||
|
||||
func start() {
|
||||
NSLog("ZeroTier monitor started")
|
||||
timer = NSTimer.scheduledTimerWithTimeInterval(1.0,
|
||||
target: self,
|
||||
selector: #selector(updateNetworkInfo),
|
||||
@ -29,8 +36,11 @@ class NetworkMonitor: NSObject {
|
||||
repeats: true)
|
||||
}
|
||||
|
||||
deinit {
|
||||
|
||||
func stop() {
|
||||
NSLog("ZeroTier monitor stopped")
|
||||
timer?.invalidate()
|
||||
timer = nil
|
||||
}
|
||||
|
||||
private func dataFile() -> String {
|
||||
|
@ -35,6 +35,8 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable
|
||||
override func viewWillAppear() {
|
||||
super.viewWillAppear()
|
||||
visible = true
|
||||
|
||||
netMonitor.start()
|
||||
}
|
||||
|
||||
override func viewWillDisappear() {
|
||||
@ -43,6 +45,8 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable
|
||||
let filePath = dataFile()
|
||||
NSKeyedArchiver.archiveRootObject(self.networkList, toFile: filePath)
|
||||
visible = false
|
||||
|
||||
netMonitor.stop()
|
||||
}
|
||||
|
||||
func deleteNetworkFromList(nwid: String) {
|
||||
@ -55,8 +59,6 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable
|
||||
if visible {
|
||||
tableView?.reloadData()
|
||||
}
|
||||
|
||||
NSLog("Visible? \(visible)")
|
||||
}
|
||||
|
||||
// NSTableViewDataSource
|
||||
|
Loading…
Reference in New Issue
Block a user