diff --git a/Modules/Battery/readers.swift b/Modules/Battery/readers.swift index 7a547f0f..1b75c1a2 100644 --- a/Modules/Battery/readers.swift +++ b/Modules/Battery/readers.swift @@ -23,6 +23,7 @@ internal class UsageReader: Reader { private var usage: Battery_Usage = Battery_Usage() public override func start() { + self.active = true let context = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque()) self.source = IOPSNotificationCreateRunLoopSource({ (context) in @@ -31,7 +32,9 @@ internal class UsageReader: Reader { } let watcher = Unmanaged.fromOpaque(ctx).takeUnretainedValue() - watcher.read() + if watcher.active { + watcher.read() + } }, context).takeRetainedValue() self.loop = RunLoop.current.getCFRunLoop() @@ -45,6 +48,7 @@ internal class UsageReader: Reader { return } + self.active = false CFRunLoopRemoveSource(runLoop, source, .defaultMode) }