From 8d11a92f97f64bbe01f16ccad2f256536ceac803 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Wed, 7 Jun 2023 21:39:03 +0200 Subject: [PATCH] Fix switching to AVPlayer in fullscreen --- Model/Player/Backends/AVPlayerBackend.swift | 17 ++++++++++++++++- Model/Player/Backends/MPVBackend.swift | 2 ++ Model/Player/PlayerModel.swift | 8 ++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Model/Player/Backends/AVPlayerBackend.swift b/Model/Player/Backends/AVPlayerBackend.swift index ecc7533e..0ee538f2 100644 --- a/Model/Player/Backends/AVPlayerBackend.swift +++ b/Model/Player/Backends/AVPlayerBackend.swift @@ -353,9 +353,11 @@ final class AVPlayerBackend: PlayerBackend { } self.model.lastSkipped = segment + self.model.handleOnPlayStream(stream) self.model.play() } } else { + self.model.handleOnPlayStream(stream) self.model.play() } } @@ -486,7 +488,9 @@ final class AVPlayerBackend: PlayerBackend { if self.model.activeBackend == .appleAVPlayer, self.isAutoplaying(playerItem) { - self.model.updateAspectRatio() + if model.aspectRatio != aspectRatio { + self.model.updateAspectRatio() + } if self.startPictureInPictureOnPlay, let controller = self.model.pipController, @@ -708,6 +712,17 @@ final class AVPlayerBackend: PlayerBackend { } else { stopMusicMode() } + + #if os(iOS) + ControlOverlaysModel.shared.hide() + model.navigation.presentingPlaybackSettings = false + + if model.playingFullScreen { + model.onPlayStream.append { _ in + self.controller.enterFullScreen(animated: true) + } + } + #endif } var isStartingPiP: Bool { diff --git a/Model/Player/Backends/MPVBackend.swift b/Model/Player/Backends/MPVBackend.swift index fa2e4bb8..673c363e 100644 --- a/Model/Player/Backends/MPVBackend.swift +++ b/Model/Player/Backends/MPVBackend.swift @@ -267,9 +267,11 @@ final class MPVBackend: PlayerBackend { self.model.lastSkipped = segment self.play() + self.model.handleOnPlayStream(stream) } } else { self.play() + self.model.handleOnPlayStream(stream) } } } diff --git a/Model/Player/PlayerModel.swift b/Model/Player/PlayerModel.swift index 3d12e17b..0c37bc0d 100644 --- a/Model/Player/PlayerModel.swift +++ b/Model/Player/PlayerModel.swift @@ -182,6 +182,7 @@ final class PlayerModel: ObservableObject { private var currentArtwork: MPMediaItemArtwork? var onPresentPlayer = [() -> Void]() + var onPlayStream = [(Stream) -> Void]() private var remoteCommandCenterConfigured = false init() { @@ -1093,4 +1094,11 @@ final class PlayerModel: ObservableObject { guard let videoWidth = backend?.videoWidth, let videoHeight = backend?.videoHeight else { return "unknown" } return "\(String(format: "%.2f", videoWidth))\u{d7}\(String(format: "%.2f", videoHeight))" } + + func handleOnPlayStream(_ stream: Stream) { + backend.setRate(currentRate) + + onPlayStream.forEach { $0(stream) } + onPlayStream.removeAll() + } }