From 2b5bb945e1f4b5f8e07d2e3ab797b9bbe435a88a Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 17 May 2024 03:07:33 -0700 Subject: [PATCH] Add missing check before calling discardBuffer The method is only allowed to be called on prepared items. This check was currently missing and also causing the corresponding test to be flaky in ExoPlayerTest. PiperOrigin-RevId: 634694077 --- .../androidx/media3/exoplayer/ExoPlayerImplInternal.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java index 7deff633ba..1e7e2a4098 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java @@ -2585,15 +2585,15 @@ import java.util.concurrent.atomic.AtomicBoolean; playbackPositionUs, bufferedDurationUs, mediaClock.getPlaybackParameters().speed); + MediaPeriodHolder playingPeriodHolder = queue.getPlayingPeriod(); if (!shouldContinueLoading + && playingPeriodHolder.prepared && bufferedDurationUs < PLAYBACK_BUFFER_EMPTY_THRESHOLD_US && (backBufferDurationUs > 0 || retainBackBufferFromKeyframe)) { // LoadControl doesn't want to continue loading despite no buffered data. Clear back buffer // and try again in case it's blocked on memory usage of the back buffer. - queue - .getPlayingPeriod() - .mediaPeriod - .discardBuffer(playbackInfo.positionUs, /* toKeyframe= */ false); + playingPeriodHolder.mediaPeriod.discardBuffer( + playbackInfo.positionUs, /* toKeyframe= */ false); shouldContinueLoading = loadControl.shouldContinueLoading( playerId,