From 8c17259072c24749b37a5df96c4df0cecef2faf2 Mon Sep 17 00:00:00 2001 From: Jcuhfehl <91626737+Jcuhfehl@users.noreply.github.com> Date: Fri, 27 Jan 2023 23:05:50 +0100 Subject: [PATCH] Fix mpv in downloads (#247) * Fix mpv in downloads * Don't use wildcard imports --------- Co-authored-by: Jarne Demeulemeester --- .../viewmodels/PlayerActivityViewModel.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt index d13c45f0..aec0b34d 100644 --- a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt +++ b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerActivityViewModel.kt @@ -16,19 +16,21 @@ import androidx.media3.exoplayer.DefaultRenderersFactory import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.trackselection.DefaultTrackSelector import dagger.hilt.android.lifecycle.HiltViewModel +import dev.jdtech.jellyfin.AppPreferences import dev.jdtech.jellyfin.database.DownloadDatabaseDao import dev.jdtech.jellyfin.models.Intro import dev.jdtech.jellyfin.models.PlayerItem import dev.jdtech.jellyfin.mpv.MPVPlayer import dev.jdtech.jellyfin.mpv.TrackType import dev.jdtech.jellyfin.repository.JellyfinRepository -import dev.jdtech.jellyfin.AppPreferences import dev.jdtech.jellyfin.utils.postDownloadPlaybackProgress -import java.util.UUID -import javax.inject.Inject +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext import timber.log.Timber +import java.util.UUID +import javax.inject.Inject @HiltViewModel class PlayerActivityViewModel @@ -150,8 +152,12 @@ constructor( } player.setMediaItems(mediaItems, currentMediaItemIndex, items.getOrNull(currentMediaItemIndex)?.playbackPosition?.div(10000) ?: C.TIME_UNSET) - if (!appPreferences.playerMpv || !playFromDownloads) - player.prepare() // TODO: This line causes a crash when playing from downloads with MPV + if (appPreferences.playerMpv && playFromDownloads) { // For some reason, adding a 1ms delay between these two lines fixes a crash when playing with mpv from downloads + withContext(Dispatchers.IO) { + Thread.sleep(1) + } + } + player.prepare() player.play() pollPosition(player) }