mirror of
https://github.com/yattee/yattee.git
synced 2025-08-09 20:24:06 +00:00
Set AVAudioSession, disable screensaver during playback on macOS
This commit is contained in:
34
Model/Player/ScreenSaverManager.swift
Normal file
34
Model/Player/ScreenSaverManager.swift
Normal 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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user