summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-07-26 20:31:06 -0700
committerGrant Limberg <glimberg@gmail.com>2016-07-26 20:31:06 -0700
commit78e5a00a68c51236f5fca187778990303a0c4e30 (patch)
tree2d1511a72289534ef501257ccfe6897baa625d58
parentb9a4d138fc45cd5cd1fb0f9c56575b456eab4255 (diff)
downloadinfinitytier-78e5a00a68c51236f5fca187778990303a0c4e30.tar.gz
infinitytier-78e5a00a68c51236f5fca187778990303a0c4e30.zip
Only poll the ZeroTier service when the menu or Network List are visible. Reduces CPU idle prevention by a a LOT
-rw-r--r--ZeroTier One/AppDelegate.swift14
-rw-r--r--ZeroTier One/NetworkMonitor.swift12
-rw-r--r--ZeroTier One/ShowNetworksViewController.swift6
3 files changed, 27 insertions, 5 deletions
diff --git a/ZeroTier One/AppDelegate.swift b/ZeroTier One/AppDelegate.swift
index 224f4d24..298363aa 100644
--- a/ZeroTier One/AppDelegate.swift
+++ b/ZeroTier One/AppDelegate.swift
@@ -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()
+ }
}
diff --git a/ZeroTier One/NetworkMonitor.swift b/ZeroTier One/NetworkMonitor.swift
index 2071fbbb..c744e6e8 100644
--- a/ZeroTier One/NetworkMonitor.swift
+++ b/ZeroTier One/NetworkMonitor.swift
@@ -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 {
diff --git a/ZeroTier One/ShowNetworksViewController.swift b/ZeroTier One/ShowNetworksViewController.swift
index 97b52eb7..41d088de 100644
--- a/ZeroTier One/ShowNetworksViewController.swift
+++ b/ZeroTier One/ShowNetworksViewController.swift
@@ -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