From f014b67d3e48627dd2cf69f2620349ea39f620de Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 7 Nov 2017 02:51:43 -0800 Subject: [PATCH] Use helper method to disable Renderers. Removes duplicated code and starts cleaning up handling of media clocks. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=174829840 --- .../exoplayer2/ExoPlayerImplInternal.java | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 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 b79f5c70a3..f00a5ce02d 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 @@ -718,11 +718,9 @@ import java.io.IOException; if (playingPeriodHolder != newPlayingPeriodHolder || playingPeriodHolder != readingPeriodHolder) { for (Renderer renderer : enabledRenderers) { - renderer.disable(); + disableRenderer(renderer); } enabledRenderers = new Renderer[0]; - rendererMediaClock = null; - rendererMediaClockSource = null; playingPeriodHolder = null; } @@ -801,13 +799,10 @@ import java.io.IOException; handler.removeMessages(MSG_DO_SOME_WORK); rebuffering = false; standaloneMediaClock.stop(); - rendererMediaClock = null; - rendererMediaClockSource = null; rendererPositionUs = RENDERER_TIMESTAMP_OFFSET_US; for (Renderer renderer : enabledRenderers) { try { - ensureStopped(renderer); - renderer.disable(); + disableRenderer(renderer); } catch (ExoPlaybackException | RuntimeException e) { // There's nothing we can do. Log.e(TAG, "Stop failed.", e); @@ -853,6 +848,15 @@ import java.io.IOException; } } + private void disableRenderer(Renderer renderer) throws ExoPlaybackException { + if (renderer == rendererMediaClockSource) { + rendererMediaClock = null; + rendererMediaClockSource = null; + } + ensureStopped(renderer); + renderer.disable(); + } + private void reselectTracksInternal() throws ExoPlaybackException { if (playingPeriodHolder == null) { // We don't have tracks yet, so we don't care. @@ -905,12 +909,7 @@ import java.io.IOException; if (rendererWasEnabledFlags[i]) { if (sampleStream != renderer.getStream()) { // We need to disable the renderer. - if (renderer == rendererMediaClockSource) { - rendererMediaClock = null; - rendererMediaClockSource = null; - } - ensureStopped(renderer); - renderer.disable(); + disableRenderer(renderer); } else if (streamResetFlags[i]) { // The renderer will continue to consume from its current stream, but needs to be reset. renderer.resetPosition(rendererPositionUs); @@ -1453,12 +1452,7 @@ import java.io.IOException; // The renderer should be disabled before playing the next period, either because it's not // needed to play the next period, or because we need to re-enable it as its current stream // is final and it's not reading ahead. - if (renderer == rendererMediaClockSource) { - rendererMediaClock = null; - rendererMediaClockSource = null; - } - ensureStopped(renderer); - renderer.disable(); + disableRenderer(renderer); } }