Memorize playback rate

This commit is contained in:
Rasmus Krämer 2022-03-09 22:10:15 +01:00
parent f76128c2b3
commit 926c17543f

View file

@ -22,6 +22,7 @@ class AudioPlayer: NSObject {
// enums and @objc are not compatible
@objc dynamic var status: Int
@objc dynamic var rate: Float
private var tmpRate: Float = 1.0
private var playerContext = 0
private var playerItemContext = 0
@ -71,7 +72,10 @@ class AudioPlayer: NSObject {
public func play() {
self.audioPlayer.play()
self.status = 1
self.rate = 1.0
self.rate = self.tmpRate
self.audioPlayer.rate = self.tmpRate
print("oof", self.rate, self.tmpRate)
updateNowPlaying()
}
@ -97,10 +101,17 @@ class AudioPlayer: NSObject {
self.updateNowPlaying()
}
}
public func setPlaybackRate(_ rate: Float) {
if(self.audioPlayer.rate != rate) {
public func setPlaybackRate(_ rate: Float, observed: Bool = false) {
if self.audioPlayer.rate != rate {
self.audioPlayer.rate = rate
}
if rate > 0.0 && !(observed && rate == 1) {
print("yikes", self.rate, self.tmpRate)
self.tmpRate = rate
}
self.rate = rate
self.updateNowPlaying()
@ -245,7 +256,7 @@ class AudioPlayer: NSObject {
}
} else if context == &playerContext {
if keyPath == #keyPath(AVPlayer.rate) {
setPlaybackRate(change?[.newKey] as? Float ?? 1.0)
setPlaybackRate(change?[.newKey] as? Float ?? 1.0, observed: true)
} else if keyPath == #keyPath(AVPlayer.currentItem) {
NSLog("WARNING: Item ended")
}