From 32b4db361f09436f13075b6d4dd2d3150151a28e Mon Sep 17 00:00:00 2001 From: tonihei Date: Wed, 28 Feb 2018 01:46:40 -0800 Subject: [PATCH] Send empty timeline for empty DynamicConcatenatingMediaSource immediately. Without child sources, the timeline can't possibly updated again within the current looper message. Thus, we can send the empty timeline immediately. This fixes a recently introduced flakiness in the test. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=187295700 --- .../source/DynamicConcatenatingMediaSource.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSource.java index 8aef778df3..317166a75e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSource.java @@ -322,9 +322,13 @@ public final class DynamicConcatenatingMediaSource extends CompositeMediaSource< public synchronized void prepareSourceInternal(ExoPlayer player, boolean isTopLevelSource) { super.prepareSourceInternal(player, isTopLevelSource); this.player = player; - shuffleOrder = shuffleOrder.cloneAndInsert(0, mediaSourcesPublic.size()); - addMediaSourcesInternal(0, mediaSourcesPublic); - scheduleListenerNotification(/* actionOnCompletion= */ null); + if (mediaSourcesPublic.isEmpty()) { + notifyListener(); + } else { + shuffleOrder = shuffleOrder.cloneAndInsert(0, mediaSourcesPublic.size()); + addMediaSourcesInternal(0, mediaSourcesPublic); + scheduleListenerNotification(/* actionOnCompletion= */ null); + } } @Override