diff --git a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java index e4c194f903de0..c90d0b61e2939 100644 --- a/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java +++ b/shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java @@ -62,6 +62,9 @@ public class FlutterRenderer implements TextureRegistry { */ @VisibleForTesting public static boolean debugForceSurfaceProducerGlTextures = false; + /** Whether to disable clearing of the Surface used to render platform views. */ + @VisibleForTesting public static boolean debugDisableSurfaceClear = false; + private static final String TAG = "FlutterRenderer"; @NonNull private final FlutterJNI flutterJNI; diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java b/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java index 7defa9ef01a5e..1b202c14cb535 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformViewWrapper.java @@ -26,6 +26,7 @@ import androidx.annotation.VisibleForTesting; import io.flutter.Log; import io.flutter.embedding.android.AndroidTouchProcessor; +import io.flutter.embedding.engine.renderer.FlutterRenderer; import io.flutter.util.ViewUtils; /** @@ -63,7 +64,7 @@ public PlatformViewWrapper( this.renderTarget = renderTarget; Surface surface = renderTarget.getSurface(); - if (surface != null) { + if (surface != null && !FlutterRenderer.debugDisableSurfaceClear) { final Canvas canvas = surface.lockHardwareCanvas(); try { canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); diff --git a/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java b/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java index 6c2989c1517b4..1bf2781123255 100644 --- a/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java +++ b/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java @@ -24,6 +24,7 @@ public void onCreate(@Nullable Bundle arguments) { "--impeller-backend=" + arguments.getString("impeller-backend", "vulkan") }; } + FlutterRenderer.debugDisableSurfaceClear = true; if ("true".equals(arguments.getString("force-surface-producer-surface-texture"))) { // Set a test flag to force the SurfaceProducer to use SurfaceTexture. FlutterRenderer.debugForceSurfaceProducerGlTextures = true;