From 5366f857e8828a58fe03f542b736cf0d7004f6b3 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 22 Jan 2020 15:04:14 -0800 Subject: [PATCH 1/2] Release TextureView surface within FlutterTextureView when disconnected. (#48535) --- .../io/flutter/embedding/android/FlutterTextureView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java index 7205cc5a6f970..165e0d47f6442 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,6 @@ private void disconnectSurfaceFromRenderer() { } flutterRenderer.stopRenderingToSurface(); + renderSurface.release(); } } From 60917d798421dbc5d6af432155d89b5bb09bf458 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Wed, 22 Jan 2020 15:08:17 -0800 Subject: [PATCH 2/2] Null out renderSurface. --- .../android/io/flutter/embedding/android/FlutterTextureView.java | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java index 165e0d47f6442..adee797258332 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterTextureView.java @@ -196,5 +196,6 @@ private void disconnectSurfaceFromRenderer() { flutterRenderer.stopRenderingToSurface(); renderSurface.release(); + renderSurface = null; } }