Set AVAudioSession, disable screensaver during playback on macOS

This commit is contained in:
Arkadiusz Fal
2021-10-24 16:01:36 +02:00
parent ca8298a9e9
commit 68b5abd122
6 changed files with 80 additions and 3 deletions

View File

@@ -0,0 +1,34 @@
import Foundation
import IOKit.pwr_mgt
struct ScreenSaverManager {
static var shared = ScreenSaverManager()
var noSleepAssertion: IOPMAssertionID = 0
var noSleepReturn: IOReturn?
var enabled: Bool {
noSleepReturn == nil
}
@discardableResult mutating func disable(reason: String = "Unknown reason") -> Bool {
guard enabled else {
return false
}
noSleepReturn = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep as CFString,
IOPMAssertionLevel(kIOPMAssertionLevelOn),
reason as CFString,
&noSleepAssertion)
return noSleepReturn == kIOReturnSuccess
}
@discardableResult mutating func enable() -> Bool {
if noSleepReturn != nil {
_ = IOPMAssertionRelease(noSleepAssertion) == kIOReturnSuccess
noSleepReturn = nil
return true
}
return false
}
}