From d32b38c3528c7b13c4f9004feba2badf7b13d800 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Sun, 27 Feb 2022 21:25:29 +0100 Subject: [PATCH] Fix EOF handler --- Model/Player/Backends/MPVBackend.swift | 8 +++----- Model/Player/PlayerModel.swift | 12 ++++++++---- Shared/Player/VideoPlayerView.swift | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Model/Player/Backends/MPVBackend.swift b/Model/Player/Backends/MPVBackend.swift index ed6f8ff7..e3932cfe 100644 --- a/Model/Player/Backends/MPVBackend.swift +++ b/Model/Player/Backends/MPVBackend.swift @@ -271,11 +271,9 @@ final class MPVBackend: PlayerBackend { onFileLoaded = nil case MPV_EVENT_END_FILE: - break - // DispatchQueue.main.async { [weak self] in - // TODO: handle EOF - // self?.handleEndOfFile(event) - // } + DispatchQueue.main.async { [weak self] in + self?.handleEndOfFile(event) + } default: logger.info(.init(stringLiteral: "event: \(String(cString: mpv_event_name(event.pointee.event_id)))")) diff --git a/Model/Player/PlayerModel.swift b/Model/Player/PlayerModel.swift index 80c63084..1d95957b 100644 --- a/Model/Player/PlayerModel.swift +++ b/Model/Player/PlayerModel.swift @@ -429,11 +429,15 @@ final class PlayerModel: ObservableObject { #endif func updateNowPlayingInfo() { + guard let video = currentItem?.video else { + return + } + let currentTime = (backend.currentTime?.seconds.isFinite ?? false) ? backend.currentTime!.seconds : 0 var nowPlayingInfo: [String: AnyObject] = [ - MPMediaItemPropertyTitle: currentItem.video.title as AnyObject, - MPMediaItemPropertyArtist: currentItem.video.author as AnyObject, - MPNowPlayingInfoPropertyIsLiveStream: currentItem.video.live as AnyObject, + MPMediaItemPropertyTitle: video.title as AnyObject, + MPMediaItemPropertyArtist: video.author as AnyObject, + MPNowPlayingInfoPropertyIsLiveStream: video.live as AnyObject, MPNowPlayingInfoPropertyElapsedPlaybackTime: currentTime as AnyObject, MPNowPlayingInfoPropertyPlaybackQueueCount: queue.count as AnyObject, MPNowPlayingInfoPropertyPlaybackQueueIndex: 1 as AnyObject, @@ -444,7 +448,7 @@ final class PlayerModel: ObservableObject { nowPlayingInfo[MPMediaItemPropertyArtwork] = currentArtwork as AnyObject } - if !currentItem.video.live { + if !video.live { let itemDuration = (backend.playerItemDuration ?? .zero).seconds let duration = itemDuration.isFinite ? Double(itemDuration) : nil diff --git a/Shared/Player/VideoPlayerView.swift b/Shared/Player/VideoPlayerView.swift index 5ceb9fe0..0885a64b 100644 --- a/Shared/Player/VideoPlayerView.swift +++ b/Shared/Player/VideoPlayerView.swift @@ -114,7 +114,7 @@ struct VideoPlayerView: View { Color.clear .onAppear { player.playerSize = proxy.size - // TODO move to backend method + // TODO: move to backend method player.mpvBackend.client?.setSize(proxy.size.width, proxy.size.height) } .onChange(of: proxy.size) { _ in