Commit 83107cc2 by olly Committed by Oliver Woodman

Fix missing release calls on loadingPeriodHolder

playingPeriodHolder can be null in the case that the first
period is still being prepared. We need to make sure we
release the period that's being prepared in such cases,
which is loadingPeriodHolder.

Issue: #1914

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135793472
parent 907b9bf4
...@@ -538,9 +538,15 @@ import java.io.IOException; ...@@ -538,9 +538,15 @@ import java.io.IOException;
periodIndex = C.INDEX_UNSET; periodIndex = C.INDEX_UNSET;
} }
MediaPeriodHolder<T> newPlayingPeriodHolder = null;
if (playingPeriodHolder == null) {
// We're still waiting for the first period to be prepared.
if (loadingPeriodHolder != null) {
loadingPeriodHolder.release();
}
} else {
// Clear the timeline, but keep the requested period if it is already prepared. // Clear the timeline, but keep the requested period if it is already prepared.
MediaPeriodHolder<T> periodHolder = playingPeriodHolder; MediaPeriodHolder<T> periodHolder = playingPeriodHolder;
MediaPeriodHolder<T> newPlayingPeriodHolder = null;
while (periodHolder != null) { while (periodHolder != null) {
if (periodHolder.index == periodIndex && periodHolder.prepared) { if (periodHolder.index == periodIndex && periodHolder.prepared) {
newPlayingPeriodHolder = periodHolder; newPlayingPeriodHolder = periodHolder;
...@@ -549,6 +555,7 @@ import java.io.IOException; ...@@ -549,6 +555,7 @@ import java.io.IOException;
} }
periodHolder = periodHolder.next; periodHolder = periodHolder.next;
} }
}
// Disable all the renderers if the period is changing. // Disable all the renderers if the period is changing.
if (newPlayingPeriodHolder != playingPeriodHolder) { if (newPlayingPeriodHolder != playingPeriodHolder) {
...@@ -892,7 +899,8 @@ import java.io.IOException; ...@@ -892,7 +899,8 @@ import java.io.IOException;
} }
// Release all loaded periods. // Release all loaded periods.
releasePeriodHoldersFrom(playingPeriodHolder); releasePeriodHoldersFrom(playingPeriodHolder != null ? playingPeriodHolder
: loadingPeriodHolder);
bufferAheadPeriodCount = 0; bufferAheadPeriodCount = 0;
playingPeriodHolder = null; playingPeriodHolder = null;
readingPeriodHolder = null; readingPeriodHolder = null;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment