From 5eca6694741869d8331dd15a32ffc9d9f991381f Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 22 Jun 2016 10:26:37 -0700 Subject: [PATCH] Move renderers into Timeline. The outer class should only deal with the enabled renderers. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=125579652 --- .../exoplayer/ExoPlayerImplInternal.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java b/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java index 2faf25f324..e57a3a6500 100644 --- a/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java @@ -84,7 +84,6 @@ import java.util.ArrayList; private static final int IDLE_INTERVAL_MS = 1000; private final TrackSelector trackSelector; - private final TrackRenderer[] renderers; private final StandaloneMediaClock standaloneMediaClock; private final long minBufferUs; private final long minRebufferUs; @@ -113,7 +112,6 @@ import java.util.ArrayList; public ExoPlayerImplInternal(TrackRenderer[] renderers, TrackSelector trackSelector, int minBufferMs, int minRebufferMs, boolean playWhenReady, Handler eventHandler) { - this.renderers = renderers; this.trackSelector = trackSelector; this.minBufferUs = minBufferMs * 1000L; this.minRebufferUs = minRebufferMs * 1000L; @@ -127,7 +125,7 @@ import java.util.ArrayList; standaloneMediaClock = new StandaloneMediaClock(); enabledRenderers = new TrackRenderer[0]; - timeline = new Timeline(); + timeline = new Timeline(renderers); playbackInfo = new PlaybackInfo(0); trackSelector.init(this); @@ -476,7 +474,7 @@ import java.util.ArrayList; private void resumeInternal() throws ExoPlaybackException { boolean allRenderersEnded = true; boolean allRenderersReadyOrEnded = true; - for (TrackRenderer renderer : renderers) { + for (TrackRenderer renderer : enabledRenderers) { allRenderersEnded = allRenderersEnded && renderer.isEnded(); allRenderersReadyOrEnded = allRenderersReadyOrEnded && isReadyOrEnded(renderer); } @@ -535,18 +533,16 @@ import java.util.ArrayList; standaloneMediaClock.stop(); rendererMediaClock = null; rendererMediaClockSource = null; - enabledRenderers = new TrackRenderer[0]; - for (TrackRenderer renderer : renderers) { + for (TrackRenderer renderer : enabledRenderers) { try { ensureStopped(renderer); - if (renderer.getState() == TrackRenderer.STATE_ENABLED) { - renderer.disable(); - } + renderer.disable(); } catch (ExoPlaybackException | RuntimeException e) { // There's nothing we can do. Log.e(TAG, "Stop failed.", e); } } + enabledRenderers = new TrackRenderer[0]; sampleSource = null; timeline.reset(); } @@ -589,6 +585,8 @@ import java.util.ArrayList; */ private final class Timeline { + private final TrackRenderer[] renderers; + // Used during track reselection. private final boolean[] rendererWasEnabledFlags; private final ArrayList oldStreams; @@ -603,7 +601,8 @@ import java.util.ArrayList; private long playingSourceEndPositionUs; private long bufferingSourceOffsetUs; - public Timeline() { + public Timeline(TrackRenderer[] renderers) { + this.renderers = renderers; rendererWasEnabledFlags = new boolean[renderers.length]; oldStreams = new ArrayList<>(); newSelections = new ArrayList<>();