From 17014e6264d2b0aba62f6746e4de8ab3382f70b8 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 1 Aug 2016 08:23:48 -0700 Subject: [PATCH] Fix concat media source premature listener invocation ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=128987095 --- .../exoplayer2/source/ConcatenatingMediaSource.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index 74540bc03d..f8bacd8bf6 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -45,6 +45,12 @@ public final class ConcatenatingMediaSource implements MediaSource { @Override public void onTimelineChanged(Timeline timeline) { timelines[index] = timeline; + for (int i = 0; i < timelines.length; i++) { + if (timelines[i] == null) { + // Don't invoke the listener until all sources have timelines. + return; + } + } ConcatenatingMediaSource.this.timeline = new ConcatenatedTimeline(timelines.clone()); listener.onTimelineChanged(ConcatenatingMediaSource.this.timeline); } @@ -105,10 +111,8 @@ public final class ConcatenatingMediaSource implements MediaSource { int[] sourceOffsets = new int[timelines.length]; int sourceIndexOffset = 0; for (int i = 0; i < timelines.length; i++) { - Timeline manifest = timelines[i]; - int periodCount; - if (manifest == null - || (periodCount = manifest.getPeriodCount()) == Timeline.UNKNOWN_PERIOD_COUNT) { + int periodCount = timelines[i].getPeriodCount(); + if (periodCount == Timeline.UNKNOWN_PERIOD_COUNT) { sourceOffsets = Arrays.copyOf(sourceOffsets, i); break; }