From 84f4fe5cf9c5085a0631ace25644e9ad79ab06a6 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 29 Jun 2017 09:48:46 -0700 Subject: [PATCH] Recover from empty timelines. (Related to GitHub #1706) When the timeline becomes empty, the playback state transitions to "ended". When the timeline becomes non-empty again, exceptions are thrown because MSG_DO_SOME_WORK is still regularly sent and media periods are getting prepared. This change ensures that no MSG_DO_SOME_WORK messages are sent in "ended" state. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=160537147 --- .../com/google/android/exoplayer2/ExoPlayerImplInternal.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 6f54d5f9e1..f6a0bdd08e 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 @@ -618,7 +618,7 @@ import java.io.IOException; if ((playWhenReady && state == ExoPlayer.STATE_READY) || state == ExoPlayer.STATE_BUFFERING) { scheduleNextWork(operationStartTimeMs, RENDERING_INTERVAL_MS); - } else if (enabledRenderers.length != 0) { + } else if (enabledRenderers.length != 0 && state != ExoPlayer.STATE_ENDED) { scheduleNextWork(operationStartTimeMs, IDLE_INTERVAL_MS); } else { handler.removeMessages(MSG_DO_SOME_WORK); @@ -831,7 +831,7 @@ import java.io.IOException; for (ExoPlayerMessage message : messages) { message.target.handleMessage(message.messageType, message.message); } - if (mediaSource != null) { + if (state == ExoPlayer.STATE_READY || state == ExoPlayer.STATE_BUFFERING) { // The message may have caused something to change that now requires us to do work. handler.sendEmptyMessage(MSG_DO_SOME_WORK); }