Clean up surface on setting renderer

If a surface was previously passed to the player then an output buffer
renderer was set, we would remove surface callbacks but not clear the
surface on renderers that accept MSG_SET_SURFACE.

PiperOrigin-RevId: 274532266
This commit is contained in:
andrewlewis 2019-10-14 10:07:49 +01:00 committed by Oliver Woodman
parent ce01c79e01
commit d52f06e611

View File

@ -608,16 +608,14 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void setOutputBufferRenderer(VideoDecoderOutputBufferRenderer outputBufferRenderer) { public void setOutputBufferRenderer(VideoDecoderOutputBufferRenderer outputBufferRenderer) {
verifyApplicationThread(); verifyApplicationThread();
removeSurfaceCallbacks(); setVideoSurface(null);
List<PlayerMessage> messages = new ArrayList<>();
for (Renderer renderer : renderers) { for (Renderer renderer : renderers) {
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
messages.add( player
player .createMessage(renderer)
.createMessage(renderer) .setType(C.MSG_SET_OUTPUT_BUFFER_RENDERER)
.setType(C.MSG_SET_OUTPUT_BUFFER_RENDERER) .setPayload(outputBufferRenderer)
.setPayload(outputBufferRenderer) .send();
.send());
} }
} }
} }