From 39ec69fe66bfdf5d72f7efe7e61679548b18bcf2 Mon Sep 17 00:00:00 2001 From: claincly Date: Mon, 5 Jun 2023 14:32:57 +0000 Subject: [PATCH] Fix recreation of DefaultShaderProgram in FinalWrapper `outputSurfaceInfoChanged` is not reset when `defaultShaderProgram` is null. That is, on the first time `ensureConfigured()` is called with output size changed, `outputSurfaceInfoChanged` is not set to false after creating the `defaultShaderProgram`, and `defaultShaderProgram` will be created again on the second time `ensureConfigured()` is called. PiperOrigin-RevId: 537870404 (cherry picked from commit 133943a63520fbc872c3960647144fde8a918df8) --- .../java/androidx/media3/effect/FinalShaderProgramWrapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java b/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java index f7176f0f80..d9c48f3b57 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java @@ -461,14 +461,15 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; defaultShaderProgram = null; outputSurfaceInfoChanged = false; } + if (defaultShaderProgram == null) { defaultShaderProgram = createDefaultShaderProgram( outputSurfaceInfo == null ? 0 : outputSurfaceInfo.orientationDegrees, outputWidth, outputHeight); + outputSurfaceInfoChanged = false; } - return true; }