diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java index 7205cc5a6f970..adee797258332 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java @@ -38,6 +38,8 @@ public class FlutterTextureView extends TextureView implements RenderSurface { private boolean isAttachedToFlutterRenderer = false; @Nullable private FlutterRenderer flutterRenderer; + @Nullable + private Surface renderSurface; // Connects the {@code SurfaceTexture} beneath this {@code TextureView} with Flutter's native code. // Callbacks are received by this Object and then those messages are forwarded to our @@ -172,7 +174,8 @@ private void connectSurfaceToRenderer() { throw new IllegalStateException("connectSurfaceToRenderer() should only be called when flutterRenderer and getSurfaceTexture() are non-null."); } - flutterRenderer.startRenderingToSurface(new Surface(getSurfaceTexture())); + renderSurface = new Surface(getSurfaceTexture()); + flutterRenderer.startRenderingToSurface(renderSurface); } // FlutterRenderer must be non-null. @@ -192,5 +195,7 @@ private void disconnectSurfaceFromRenderer() { } flutterRenderer.stopRenderingToSurface(); + renderSurface.release(); + renderSurface = null; } }