From 503af63aef85e0fc11bc934fcccdfed65745e9b8 Mon Sep 17 00:00:00 2001 From: Emmanuel Garcia Date: Fri, 5 Mar 2021 21:50:13 -0800 Subject: [PATCH] Prevent race condition while switching surfaces (flutter/engine#24838) --- .../io/flutter/embedding/android/FlutterImageView.java | 3 --- .../android/io/flutter/embedding/android/FlutterView.java | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterImageView.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterImageView.java index 3dee0cd230f..e08a1629dd9 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterImageView.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterImageView.java @@ -118,9 +118,6 @@ public class FlutterImageView extends View implements RenderSurface { */ @Override public void attachToRenderer(@NonNull FlutterRenderer flutterRenderer) { - if (isAttachedToFlutterRenderer) { - return; - } switch (kind) { case background: flutterRenderer.swapSurface(imageReader.getSurface()); diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterView.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterView.java index 2b886bc9c24..ea02a08fd23 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterView.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterView.java @@ -1068,7 +1068,9 @@ public class FlutterView extends FrameLayout implements MouseCursorPlugin.MouseC public void onFlutterUiDisplayed() { renderer.removeIsDisplayingFlutterUiListener(this); onDone.run(); - flutterImageView.detachFromRenderer(); + if (!(renderSurface instanceof FlutterImageView)) { + flutterImageView.detachFromRenderer(); + } } @Override