Playback modes

This commit is contained in:
Arkadiusz Fal
2022-07-11 00:24:56 +02:00
parent f0b8e7f655
commit ebe3ba9ed5
13 changed files with 150 additions and 105 deletions

View File

@@ -492,26 +492,7 @@ final class AVPlayerBackend: PlayerBackend {
model.prepareCurrentItemForHistory(finished: true)
}
if model.queue.isEmpty {
#if !os(macOS)
try? AVAudioSession.sharedInstance().setActive(false)
#endif
if Defaults[.closeLastItemOnPlaybackEnd] {
model.resetQueue()
#if os(tvOS)
controller?.playerView.dismiss(animated: false) { [weak self] in
self?.controller?.dismiss(animated: true)
}
#else
model.hide()
#endif
}
} else {
if model.playingInPictureInPicture {
startPictureInPictureOnPlay = true
}
model.advanceToNextItem()
}
eofPlaybackModeAction()
}
private func addFrequentTimeObserver() {

View File

@@ -444,22 +444,7 @@ final class MPVBackend: PlayerBackend {
getClientUpdates()
if Defaults[.closeLastItemOnPlaybackEnd] {
model.prepareCurrentItemForHistory(finished: true)
}
if model.queue.isEmpty {
#if !os(macOS)
try? AVAudioSession.sharedInstance().setActive(false)
#endif
if Defaults[.closeLastItemOnPlaybackEnd] {
model.resetQueue()
model.hide()
}
} else {
model.advanceToNextItem()
}
eofPlaybackModeAction()
}
func setNeedsDrawing(_ needsDrawing: Bool) {

View File

@@ -72,4 +72,30 @@ extension PlayerBackend {
func seek(relative time: CMTime, completionHandler: ((Bool) -> Void)? = nil) {
seek(relative: time, completionHandler: completionHandler)
}
func eofPlaybackModeAction() {
switch model.playbackMode {
case .queue, .shuffle:
if Defaults[.closeLastItemOnPlaybackEnd] {
model.prepareCurrentItemForHistory(finished: true)
}
if model.queue.isEmpty {
if Defaults[.closeLastItemOnPlaybackEnd] {
model.resetQueue()
model.hide()
}
} else {
model.advanceToNextItem()
}
case .loopOne:
model.backend.seek(to: .zero) { _ in
self.model.play()
}
case .related:
guard let item = model.autoplayItem else { return }
model.resetAutoplay()
model.advanceToItem(item)
}
}
}