Make sure we don't read ahead of deferred enable/disable operations

Issue: #2290
This commit is contained in:
Oliver Woodman 2017-01-05 14:58:13 +00:00
parent 037aeaf764
commit 8a0e76ba32

View File

@ -1138,18 +1138,24 @@ import java.io.IOException;
} }
if (readingPeriodHolder.isLast) { if (readingPeriodHolder.isLast) {
for (Renderer renderer : enabledRenderers) { for (int i = 0; i < renderers.length; i++) {
Renderer renderer = renderers[i];
SampleStream sampleStream = readingPeriodHolder.sampleStreams[i];
// Defer setting the stream as final until the renderer has actually consumed the whole // Defer setting the stream as final until the renderer has actually consumed the whole
// stream in case of playlist changes that cause the stream to be no longer final. // stream in case of playlist changes that cause the stream to be no longer final.
if (renderer.hasReadStreamToEnd()) { if (sampleStream != null && renderer.getStream() == sampleStream
&& renderer.hasReadStreamToEnd()) {
renderer.setCurrentStreamFinal(); renderer.setCurrentStreamFinal();
} }
} }
return; return;
} }
for (Renderer renderer : enabledRenderers) { for (int i = 0; i < renderers.length; i++) {
if (!renderer.hasReadStreamToEnd()) { Renderer renderer = renderers[i];
SampleStream sampleStream = readingPeriodHolder.sampleStreams[i];
if (renderer.getStream() != sampleStream
|| (sampleStream != null && !renderer.hasReadStreamToEnd())) {
return; return;
} }
} }