mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Ensure that we try and call release on a renderer
Do this even if stop/disable fails.
This commit is contained in:
parent
4e96caa623
commit
f52742b100
1 changed files with 30 additions and 15 deletions
|
|
@ -491,21 +491,9 @@ 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);
|
||||||
ensureStopped(renderer);
|
release(renderer);
|
||||||
if (renderer.getState() == TrackRenderer.STATE_ENABLED) {
|
|
||||||
renderer.disable();
|
|
||||||
}
|
|
||||||
renderer.release();
|
|
||||||
} catch (ExoPlaybackException e) {
|
|
||||||
// There's nothing we can do. Catch the exception here so that other renderers still have
|
|
||||||
// a chance of being cleaned up correctly.
|
|
||||||
Log.e(TAG, "Stop failed.", e);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// Ditto.
|
|
||||||
Log.e(TAG, "Stop failed.", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
renderers = null;
|
renderers = null;
|
||||||
timeSourceTrackRenderer = null;
|
timeSourceTrackRenderer = null;
|
||||||
|
|
@ -513,6 +501,33 @@ import java.util.List;
|
||||||
setState(ExoPlayer.STATE_IDLE);
|
setState(ExoPlayer.STATE_IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void stopAndDisable(TrackRenderer renderer) {
|
||||||
|
try {
|
||||||
|
ensureStopped(renderer);
|
||||||
|
if (renderer.getState() == TrackRenderer.STATE_ENABLED) {
|
||||||
|
renderer.disable();
|
||||||
|
}
|
||||||
|
} catch (ExoPlaybackException e) {
|
||||||
|
// There's nothing we can do.
|
||||||
|
Log.e(TAG, "Stop failed.", e);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
// Ditto.
|
||||||
|
Log.e(TAG, "Stop failed.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void release(TrackRenderer renderer) {
|
||||||
|
try {
|
||||||
|
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)
|
||||||
throws ExoPlaybackException {
|
throws ExoPlaybackException {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue