From 438bcada388d25a1f2d863f31d61cfccefc004f8 Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 4 Feb 2021 18:56:29 +0000 Subject: [PATCH] Consistently throw the original exception if recovery fails PiperOrigin-RevId: 355664280 --- .../exoplayer2/ExoPlayerImplInternal.java | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index 62224cb65a..9076257bac 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -535,7 +535,7 @@ import java.util.concurrent.atomic.AtomicBoolean; setOffloadSchedulingEnabledInternal(msg.arg1 == 1); break; case MSG_ATTEMPT_RENDERER_ERROR_RECOVERY: - attemptRendererErrorRecovery((ExoPlaybackException) msg.obj); + attemptRendererErrorRecovery(); break; case MSG_RELEASE: releaseInternal(); @@ -563,7 +563,8 @@ import java.util.concurrent.atomic.AtomicBoolean; handler.obtainMessage(MSG_ATTEMPT_RENDERER_ERROR_RECOVERY, e)); } else { if (pendingRecoverableRendererError != null) { - e.addSuppressed(pendingRecoverableRendererError); + pendingRecoverableRendererError.addSuppressed(e); + e = pendingRecoverableRendererError; } Log.e(TAG, "Playback error", e); stopInternal(/* forceResetRenderers= */ true, /* acknowledgeStop= */ false); @@ -593,17 +594,6 @@ import java.util.concurrent.atomic.AtomicBoolean; // Private methods. - private void attemptRendererErrorRecovery(ExoPlaybackException exceptionToRecoverFrom) - throws ExoPlaybackException { - Assertions.checkArgument(exceptionToRecoverFrom.isRecoverable); - try { - seekToCurrentPosition(/* sendDiscontinuity= */ true); - } catch (Exception e) { - exceptionToRecoverFrom.addSuppressed(e); - throw exceptionToRecoverFrom; - } - } - /** * Blocks the current thread until a condition becomes true or the specified amount of time has * elapsed. @@ -838,6 +828,10 @@ import java.util.concurrent.atomic.AtomicBoolean; } } + private void attemptRendererErrorRecovery() throws ExoPlaybackException { + seekToCurrentPosition(/* sendDiscontinuity= */ true); + } + private void updatePlaybackPositions() throws ExoPlaybackException { MediaPeriodHolder playingPeriodHolder = queue.getPlayingPeriod(); if (playingPeriodHolder == null) {