Commit f52742b1 by Oliver Woodman

Ensure that we try and call release on a renderer

Do this even if stop/disable fails.
parent 4e96caa6
...@@ -491,26 +491,41 @@ import java.util.List; ...@@ -491,26 +491,41 @@ import java.util.List;
return; return;
} }
for (int i = 0; i < renderers.length; i++) { for (int i = 0; i < renderers.length; i++) {
try {
TrackRenderer renderer = renderers[i]; TrackRenderer renderer = renderers[i];
stopAndDisable(renderer);
release(renderer);
}
renderers = null;
timeSourceTrackRenderer = null;
enabledRenderers.clear();
setState(ExoPlayer.STATE_IDLE);
}
private void stopAndDisable(TrackRenderer renderer) {
try {
ensureStopped(renderer); ensureStopped(renderer);
if (renderer.getState() == TrackRenderer.STATE_ENABLED) { if (renderer.getState() == TrackRenderer.STATE_ENABLED) {
renderer.disable(); renderer.disable();
} }
renderer.release();
} catch (ExoPlaybackException e) { } catch (ExoPlaybackException e) {
// There's nothing we can do. Catch the exception here so that other renderers still have // There's nothing we can do.
// a chance of being cleaned up correctly.
Log.e(TAG, "Stop failed.", e); Log.e(TAG, "Stop failed.", e);
} catch (RuntimeException e) { } catch (RuntimeException e) {
// Ditto. // Ditto.
Log.e(TAG, "Stop failed.", e); Log.e(TAG, "Stop failed.", e);
} }
} }
renderers = null;
timeSourceTrackRenderer = null; private void release(TrackRenderer renderer) {
enabledRenderers.clear(); try {
setState(ExoPlayer.STATE_IDLE); renderer.release();
} catch (ExoPlaybackException e) {
// There's nothing we can do.
Log.e(TAG, "Release failed.", e);
} catch (RuntimeException e) {
// Ditto.
Log.e(TAG, "Release failed.", e);
}
} }
private <T> void sendMessageInternal(int what, Object obj) private <T> void sendMessageInternal(int what, Object obj)
......
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