mirror of
https://github.com/samsonjs/media.git
synced 2026-04-02 10:45:51 +00:00
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
This commit is contained in:
parent
907b9bf4f6
commit
83107cc25d
1 changed files with 17 additions and 9 deletions
|
|
@ -538,16 +538,23 @@ import java.io.IOException;
|
|||
periodIndex = C.INDEX_UNSET;
|
||||
}
|
||||
|
||||
// Clear the timeline, but keep the requested period if it is already prepared.
|
||||
MediaPeriodHolder<T> periodHolder = playingPeriodHolder;
|
||||
MediaPeriodHolder<T> newPlayingPeriodHolder = null;
|
||||
while (periodHolder != null) {
|
||||
if (periodHolder.index == periodIndex && periodHolder.prepared) {
|
||||
newPlayingPeriodHolder = periodHolder;
|
||||
} else {
|
||||
periodHolder.release();
|
||||
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.
|
||||
MediaPeriodHolder<T> periodHolder = playingPeriodHolder;
|
||||
while (periodHolder != null) {
|
||||
if (periodHolder.index == periodIndex && periodHolder.prepared) {
|
||||
newPlayingPeriodHolder = periodHolder;
|
||||
} else {
|
||||
periodHolder.release();
|
||||
}
|
||||
periodHolder = periodHolder.next;
|
||||
}
|
||||
periodHolder = periodHolder.next;
|
||||
}
|
||||
|
||||
// Disable all the renderers if the period is changing.
|
||||
|
|
@ -892,7 +899,8 @@ import java.io.IOException;
|
|||
}
|
||||
|
||||
// Release all loaded periods.
|
||||
releasePeriodHoldersFrom(playingPeriodHolder);
|
||||
releasePeriodHoldersFrom(playingPeriodHolder != null ? playingPeriodHolder
|
||||
: loadingPeriodHolder);
|
||||
bufferAheadPeriodCount = 0;
|
||||
playingPeriodHolder = null;
|
||||
readingPeriodHolder = null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue