From 08f5b9c846cd5f58229192e55eeefca7eb71be2f Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Tue, 20 Apr 2021 16:28:53 +0800 Subject: [PATCH] Prevent addtional removeSurface calls The surface may not be cleared by its owner when it lose control last time. We had CL[1] to clean up the surface if we don't plan to show. Add new checking condition for last control, so once we have control we only remove the surface if last control was null. [1]: I4910c2a06cc67b0470477b245fc1de54b75f10f9 Bug: 185557884 Test: atest InsetsSourceConsumerTest Change-Id: I1a4f05f9b4cf6fa121554ff0abc9fdc418b95276 --- core/java/android/view/InsetsSourceConsumer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java index 8e50fed7f3923..f6df9f49d93f3 100644 --- a/core/java/android/view/InsetsSourceConsumer.java +++ b/core/java/android/view/InsetsSourceConsumer.java @@ -179,7 +179,9 @@ public class InsetsSourceConsumer { if (oldLeash == null || newLeash == null || !oldLeash.isSameSurface(newLeash)) { applyHiddenToControl(); } - if (!requestedVisible && !mIsAnimationPending) { + + // Remove the surface that owned by last control when it lost. + if (!requestedVisible && !mIsAnimationPending && lastControl == null) { removeSurface(); } }