From 0517cea4d272c79b8cc48bc48692cb3ba07ea006 Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 2 Apr 2025 08:30:32 -0700 Subject: [PATCH] Add new EPI method for when only the suppression reason has changed This also fixes the 'unsuitable output' logic incorrectly overriding the `@PlayWhenReadyChangeReason` when only the playback **suppression** state has changed. PiperOrigin-RevId: 743148739 --- .../java/androidx/media3/exoplayer/ExoPlayerImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java index 818d068861..c5da5ad1f6 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -1560,7 +1560,7 @@ import java.util.concurrent.CopyOnWriteArraySet; } this.scrubbingModeEnabled = scrubbingModeEnabled; internalPlayer.setScrubbingModeEnabled(scrubbingModeEnabled); - updatePlayWhenReady(playbackInfo.playWhenReady, playbackInfo.playWhenReadyChangeReason); + maybeUpdatePlaybackSuppressionReason(); } @Override @@ -2740,6 +2740,10 @@ import java.util.concurrent.CopyOnWriteArraySet; } } + private void maybeUpdatePlaybackSuppressionReason() { + updatePlayWhenReady(playbackInfo.playWhenReady, playbackInfo.playWhenReadyChangeReason); + } + private void updatePlayWhenReady( boolean playWhenReady, @Player.PlayWhenReadyChangeReason int playWhenReadyChangeReason) { @PlaybackSuppressionReason @@ -2901,10 +2905,10 @@ import java.util.concurrent.CopyOnWriteArraySet; if (isSelectedOutputSuitableForPlayback) { if (playbackInfo.playbackSuppressionReason == Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT) { - updatePlayWhenReady(playbackInfo.playWhenReady, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); + maybeUpdatePlaybackSuppressionReason(); } } else { - updatePlayWhenReady(playbackInfo.playWhenReady, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST); + maybeUpdatePlaybackSuppressionReason(); } }