enable/disable media source correctly when added to playlist

PiperOrigin-RevId: 270007370
This commit is contained in:
bachinger 2019-09-19 12:09:01 +01:00 committed by Toni
parent 826fe3ac27
commit a60265b106

View File

@ -132,6 +132,11 @@ import java.util.Set;
mediaSourceByUid.put(holder.uid, holder); mediaSourceByUid.put(holder.uid, holder);
if (isPrepared) { if (isPrepared) {
prepareChildSource(holder); prepareChildSource(holder);
if (mediaSourceByMediaPeriod.isEmpty()) {
enabledMediaSourceHolders.add(holder);
} else {
disableChildSource(holder);
}
} }
} }
} }
@ -267,6 +272,7 @@ import java.util.Set;
for (int i = 0; i < mediaSourceHolders.size(); i++) { for (int i = 0; i < mediaSourceHolders.size(); i++) {
MediaSourceHolder mediaSourceHolder = mediaSourceHolders.get(i); MediaSourceHolder mediaSourceHolder = mediaSourceHolders.get(i);
prepareChildSource(mediaSourceHolder); prepareChildSource(mediaSourceHolder);
enabledMediaSourceHolders.add(mediaSourceHolder);
} }
isPrepared = true; isPrepared = true;
} }
@ -357,13 +363,17 @@ import java.util.Set;
while (iterator.hasNext()) { while (iterator.hasNext()) {
MediaSourceHolder holder = iterator.next(); MediaSourceHolder holder = iterator.next();
if (holder.activeMediaPeriodIds.isEmpty()) { if (holder.activeMediaPeriodIds.isEmpty()) {
disableChildSource(holder);
iterator.remove();
}
}
}
private void disableChildSource(MediaSourceHolder holder) {
@Nullable MediaSourceAndListener disabledChild = childSources.get(holder); @Nullable MediaSourceAndListener disabledChild = childSources.get(holder);
if (disabledChild != null) { if (disabledChild != null) {
disabledChild.mediaSource.disable(disabledChild.caller); disabledChild.mediaSource.disable(disabledChild.caller);
} }
iterator.remove();
}
}
} }
private void removeMediaSourcesInternal(int fromIndex, int toIndex) { private void removeMediaSourcesInternal(int fromIndex, int toIndex) {