Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public class FlutterView extends FrameLayout implements MouseCursorPlugin.MouseC
@Nullable private FlutterSurfaceView flutterSurfaceView;
@Nullable private FlutterTextureView flutterTextureView;
@Nullable private FlutterImageView flutterImageView;
@Nullable private RenderSurface renderSurface;
@Nullable @VisibleForTesting /* package */ RenderSurface renderSurface;
@Nullable private RenderSurface previousRenderSurface;
private final Set<FlutterUiDisplayListener> flutterUiDisplayListeners = new HashSet<>();
private boolean isFlutterUiDisplayed;
Expand Down Expand Up @@ -1083,6 +1083,11 @@ public void detachFromFlutterEngine() {
flutterRenderer.removeIsDisplayingFlutterUiListener(flutterUiDisplayListener);
flutterRenderer.stopRenderingToSurface();
flutterRenderer.setSemanticsEnabled(false);

// Revert the image view to previous surface
if (previousRenderSurface != null && renderSurface == flutterImageView) {
renderSurface = previousRenderSurface;
}
renderSurface.detachFromRenderer();

flutterImageView = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ public void attachToView(@NonNull View flutterView) {
public void detachFromView() {
destroyOverlaySurfaces();
this.flutterView = null;
flutterViewConvertedToImageView = false;

// Inform all existing platform views that they are no longer associated with
// a Flutter View.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,22 @@ public void detachFromFlutterEngine_turnsOffA11y() {
verify(flutterRenderer, times(1)).setSemanticsEnabled(false);
}

@Test
public void detachFromFlutterEngine_revertImageView() {
FlutterView flutterView = new FlutterView(RuntimeEnvironment.application);
FlutterEngine flutterEngine =
spy(new FlutterEngine(RuntimeEnvironment.application, mockFlutterLoader, mockFlutterJni));

flutterView.attachToFlutterEngine(flutterEngine);
assertFalse(flutterView.renderSurface instanceof FlutterImageView);

flutterView.convertToImageView();
assertTrue(flutterView.renderSurface instanceof FlutterImageView);

flutterView.detachFromFlutterEngine();
assertFalse(flutterView.renderSurface instanceof FlutterImageView);
}

@Test
public void onConfigurationChanged_fizzlesWhenNullEngine() {
FlutterView flutterView = new FlutterView(RuntimeEnvironment.application);
Expand Down