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:
parent
ce01c79e01
commit
d52f06e611
@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user