Fixes MPV crash when playing next up (#772)

## Description
Ensure that MPV is always destroyed before being initialized again.
Also, now creating a new player is only done when switching backends
which means faster, more efficient playing the next up.

### Related issues
Fixes #766
This commit is contained in:
Ray 2026-01-25 21:38:41 -05:00 committed by GitHub
parent 7b8f5c3e63
commit 03871579f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 28 deletions

View file

@ -219,18 +219,22 @@ class PlaybackViewModel
PlayerBackend.PREFER_MPV -> if (isHdr) PlayerBackend.EXO_PLAYER else PlayerBackend.MPV
}
Timber.i("Selected backend: %s", playerBackend)
withContext(Dispatchers.Main) {
disconnectPlayer()
}
Timber.d("Selected backend: %s", playerBackend)
if (currentPlayer.value?.backend != playerBackend) {
Timber.i("Switching player backend to %s", playerBackend)
withContext(Dispatchers.Main) {
disconnectPlayer()
}
player =
playerFactory.createVideoPlayer(
playerBackend,
preferences.appPreferences.playbackPreferences,
)
currentPlayer.update {
PlayerState(player, playerBackend)
player =
playerFactory.createVideoPlayer(
playerBackend,
preferences.appPreferences.playbackPreferences,
)
currentPlayer.update {
PlayerState(player, playerBackend)
}
configurePlayer()
}
}
@ -429,7 +433,6 @@ class PlaybackViewModel
// Create the correct player for the media
createPlayer(videoStream?.hdr == true)
configurePlayer()
val subtitleStreams =
mediaSource.mediaStreams