From d52f06e6111cee39ea479e0562f14ef6e1b09d54 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Mon, 14 Oct 2019 10:07:49 +0100 Subject: [PATCH] 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 --- .../google/android/exoplayer2/SimpleExoPlayer.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index ab99994267..b89bd6fc54 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -608,16 +608,14 @@ public class SimpleExoPlayer extends BasePlayer @Override public void setOutputBufferRenderer(VideoDecoderOutputBufferRenderer outputBufferRenderer) { verifyApplicationThread(); - removeSurfaceCallbacks(); - List messages = new ArrayList<>(); + setVideoSurface(null); for (Renderer renderer : renderers) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { - messages.add( - player - .createMessage(renderer) - .setType(C.MSG_SET_OUTPUT_BUFFER_RENDERER) - .setPayload(outputBufferRenderer) - .send()); + player + .createMessage(renderer) + .setType(C.MSG_SET_OUTPUT_BUFFER_RENDERER) + .setPayload(outputBufferRenderer) + .send(); } } }