1
0
mirror of https://github.com/yattee/yattee.git synced 2025-04-28 07:50:33 +05:30

switch to previous backend when leaving PiP

Currently, when leaving PiP the backend doesn't switch to the one that was used before starting PiP.

Now, when the backend was MPV, it switches back to it after leaving PiP.
This commit is contained in:
Toni Förster 2024-04-24 21:32:32 +02:00
parent d1cf45c6a1
commit 0230106a1e
No known key found for this signature in database
GPG Key ID: 292F3E5086C83FC7

View File

@ -76,6 +76,8 @@ final class PlayerModel: ObservableObject {
} }
} }
var previousActiveBackend: PlayerBackendType?
lazy var playerBackendView = PlayerBackendView() lazy var playerBackendView = PlayerBackendView()
@Published var playerSize: CGSize = .zero { didSet { @Published var playerSize: CGSize = .zero { didSet {
@ -176,7 +178,7 @@ final class PlayerModel: ObservableObject {
@Default(.resetWatchedStatusOnPlaying) var resetWatchedStatusOnPlaying @Default(.resetWatchedStatusOnPlaying) var resetWatchedStatusOnPlaying
@Default(.playerRate) var playerRate @Default(.playerRate) var playerRate
@Default(.systemControlsSeekDuration) var systemControlsSeekDuration @Default(.systemControlsSeekDuration) var systemControlsSeekDuration
#if os(macOS) #if os(macOS)
@Default(.buttonBackwardSeekDuration) private var buttonBackwardSeekDuration @Default(.buttonBackwardSeekDuration) private var buttonBackwardSeekDuration
@Default(.buttonForwardSeekDuration) private var buttonForwardSeekDuration @Default(.buttonForwardSeekDuration) private var buttonForwardSeekDuration
@ -192,7 +194,7 @@ final class PlayerModel: ObservableObject {
var onPlayStream = [(Stream) -> Void]() var onPlayStream = [(Stream) -> Void]()
var rateToRestore: Float? var rateToRestore: Float?
private var remoteCommandCenterConfigured = false private var remoteCommandCenterConfigured = false
#if os(macOS) #if os(macOS)
var keyPressMonitor: Any? var keyPressMonitor: Any?
#endif #endif
@ -532,7 +534,7 @@ final class PlayerModel: ObservableObject {
} }
} }
func changeActiveBackend(from: PlayerBackendType, to: PlayerBackendType, changingStream: Bool = true) { func changeActiveBackend(from: PlayerBackendType, to: PlayerBackendType, changingStream: Bool = true, isInClosePip: Bool = false) {
guard activeBackend != to else { guard activeBackend != to else {
return return
} }
@ -541,7 +543,7 @@ final class PlayerModel: ObservableObject {
let wasPlaying = isPlaying let wasPlaying = isPlaying
if to == .mpv { if to == .mpv && !isInClosePip {
closePiP() closePiP()
} }
@ -664,6 +666,7 @@ final class PlayerModel: ObservableObject {
} }
func startPiP() { func startPiP() {
previousActiveBackend = activeBackend
avPlayerBackend.startPictureInPictureOnPlay = false avPlayerBackend.startPictureInPictureOnPlay = false
avPlayerBackend.startPictureInPictureOnSwitch = false avPlayerBackend.startPictureInPictureOnSwitch = false
@ -716,6 +719,12 @@ final class PlayerModel: ObservableObject {
#endif #endif
backend.closePiP() backend.closePiP()
if previousActiveBackend == .mpv {
saveTime {
self.changeActiveBackend(from: self.activeBackend, to: .mpv, isInClosePip: true)
self.controls.resetTimer()
}
}
} }
var pipImage: String { var pipImage: String {
@ -1158,7 +1167,7 @@ final class PlayerModel: ObservableObject {
return nil return nil
} }
#if os(macOS) #if os(macOS)
private func assignKeyPressMonitor() { private func assignKeyPressMonitor() {
keyPressMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { keyEvent -> NSEvent? in keyPressMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { keyEvent -> NSEvent? in
@ -1193,7 +1202,7 @@ final class PlayerModel: ObservableObject {
return nil return nil
} }
} }
private func destroyKeyPressMonitor() { private func destroyKeyPressMonitor() {
if let keyPressMonitor = keyPressMonitor { if let keyPressMonitor = keyPressMonitor {
NSEvent.removeMonitor(keyPressMonitor) NSEvent.removeMonitor(keyPressMonitor)