1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-14 14:20:32 +05:30
yattee/Model/Player/PiPDelegate.swift

46 lines
1.6 KiB
Swift
Raw Normal View History

2022-05-21 02:53:14 +05:30
import AVKit
import Foundation
final class PiPDelegate: NSObject, AVPictureInPictureControllerDelegate {
var player: PlayerModel!
func pictureInPictureController(
_: AVPictureInPictureController,
failedToStartPictureInPictureWithError error: Error
) {
print(error.localizedDescription)
}
func pictureInPictureControllerWillStartPictureInPicture(_: AVPictureInPictureController) {}
2022-05-22 02:28:11 +05:30
func pictureInPictureControllerDidStartPictureInPicture(_: AVPictureInPictureController) {
player?.playingInPictureInPicture = true
player?.avPlayerBackend.startPictureInPictureOnPlay = false
}
2022-05-21 02:53:14 +05:30
func pictureInPictureControllerDidStopPictureInPicture(_: AVPictureInPictureController) {
if player?.avPlayerBackend.switchToMPVOnPipClose ?? false {
DispatchQueue.main.async { [weak player] in
player?.avPlayerBackend.switchToMPVOnPipClose = false
player?.saveTime { [weak player] in
player?.changeActiveBackend(from: .appleAVPlayer, to: .mpv)
}
}
}
2022-05-22 02:28:11 +05:30
player?.playingInPictureInPicture = false
2022-05-21 02:53:14 +05:30
}
func pictureInPictureControllerWillStopPictureInPicture(_: AVPictureInPictureController) {}
func pictureInPictureController(
_: AVPictureInPictureController,
2022-05-22 02:28:11 +05:30
restoreUserInterfaceForPictureInPictureStopWithCompletionHandler completionHandler: @escaping (Bool) -> Void
) {
2022-05-29 20:08:37 +05:30
player?.show()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
completionHandler(true)
}
2022-05-22 02:28:11 +05:30
}
2022-05-21 02:53:14 +05:30
}