From 786dd93f2ba9b50a2b6b88670f96a7491983fb2a Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 17 Feb 2021 15:20:31 -0800 Subject: [PATCH] Fix a couple of crashes when taskbar isn't yet attached - Handle back to back addTaskbarIfNecessary(). Specifically, handle cleanup() before the previous add was attached. This is already handled on WM side, just had to remove isAttachedToWindow() check. - Add isAttachedToWindow() check to isViewInTaskbar() Test: call addTaskbarIfNecessary() three times back to back, ensure no crash. Fixes: 180509238 Bug: 171917176 Change-Id: Id68b6c376029eb5c651f47afa56666391c516aef --- .../com/android/launcher3/taskbar/TaskbarController.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java index d01de657d8..5dddaf3ed0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarController.java @@ -232,14 +232,10 @@ public class TaskbarController { } private void removeFromWindowManager() { - if (mTaskbarContainerView.isAttachedToWindow()) { - mWindowManager.removeViewImmediate(mTaskbarContainerView); - } + mWindowManager.removeViewImmediate(mTaskbarContainerView); } private void addToWindowManager() { - removeFromWindowManager(); - final int gravity = Gravity.BOTTOM; mWindowLayoutParams = new WindowManager.LayoutParams( @@ -377,7 +373,8 @@ public class TaskbarController { * @return Whether the given View is in the same window as Taskbar. */ public boolean isViewInTaskbar(View v) { - return mTaskbarContainerView.getWindowId().equals(v.getWindowId()); + return mTaskbarContainerView.isAttachedToWindow() + && mTaskbarContainerView.getWindowId().equals(v.getWindowId()); } /**