From 11b9fdad8052742b6475d4357360a3883e9cce77 Mon Sep 17 00:00:00 2001 From: nrobi144 Date: Wed, 18 Mar 2026 12:30:57 +0200 Subject: [PATCH] =?UTF-8?q?fix(media):=20enforce=20volume=20on=20playback?= =?UTF-8?q?=20start=20=E2=80=94=20VLC=20resets=20volume=20on=20new=20media?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- .../desktop/service/media/GlobalMediaPlayer.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/service/media/GlobalMediaPlayer.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/service/media/GlobalMediaPlayer.kt index f656bcd72..9e66141e6 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/service/media/GlobalMediaPlayer.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/service/media/GlobalMediaPlayer.kt @@ -154,6 +154,8 @@ object GlobalMediaPlayer { } player.media().play(url) + // Set volume after play — VLC resets volume on new media + player.audio().setVolume(_videoState.value.volume) startVideoPolling() } } @@ -191,6 +193,8 @@ object GlobalMediaPlayer { } player.media().play(url) + // Set volume after play — VLC resets volume on new media + player.audio().setVolume(_audioState.value.volume) startAudioPolling() } } @@ -353,12 +357,16 @@ object GlobalMediaPlayer { player.events().addMediaPlayerEventListener( object : MediaPlayerEventAdapter() { override fun playing(mediaPlayer: MediaPlayer) { + val state = _videoState.value _videoState.value = - _videoState.value.copy( + state.copy( isPlaying = true, isBuffering = false, duration = mediaPlayer.status().length(), ) + // Enforce volume — VLC can reset it on new media + mediaPlayer.audio().setVolume(state.volume) + mediaPlayer.audio().isMute = state.isMuted } override fun paused(mediaPlayer: MediaPlayer) { @@ -409,12 +417,16 @@ object GlobalMediaPlayer { player.events().addMediaPlayerEventListener( object : MediaPlayerEventAdapter() { override fun playing(mediaPlayer: MediaPlayer) { + val state = _audioState.value _audioState.value = - _audioState.value.copy( + state.copy( isPlaying = true, isBuffering = false, duration = mediaPlayer.status().length(), ) + // Enforce volume — VLC can reset it on new media + mediaPlayer.audio().setVolume(state.volume) + mediaPlayer.audio().isMute = state.isMuted } override fun paused(mediaPlayer: MediaPlayer) {