From 85d5cc4959c5a5b6f9601b7df3e819cb2df09001 Mon Sep 17 00:00:00 2001 From: Filip Gruszczynski Date: Fri, 4 Dec 2015 09:21:37 -0800 Subject: [PATCH] Force divider visibility reevaluation when system ui registers listener. If system UI dies and then returns, we need to make sure it receives information about visibility of the divider. Bug: 26009659 Change-Id: I067d2023ce27b2d36723070127a18c71b694eb45 --- .../server/wm/DockedStackDividerController.java | 10 +++++----- .../com/android/server/wm/WindowManagerService.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index df8d5d6f6e9b9..32c9b2a654da1 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -20,8 +20,6 @@ import android.content.Context; import android.graphics.Rect; import android.os.RemoteException; import android.util.Slog; -import android.util.SparseArray; -import android.util.SparseIntArray; import android.view.IDockDividerVisibilityListener; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; @@ -46,6 +44,7 @@ public class DockedStackDividerController { private final Rect mLastRect = new Rect(); private IDockDividerVisibilityListener mListener; private boolean mLastVisibility = false; + private boolean mForceVisibilityReevaluation; DockedStackDividerController(Context context, DisplayContent displayContent) { mDisplayContent = displayContent; @@ -69,16 +68,16 @@ public class DockedStackDividerController { void setWindow(WindowState window) { mWindow = window; - reevaluateVisibility(); + reevaluateVisibility(false); } - void reevaluateVisibility() { + void reevaluateVisibility(boolean force) { if (mWindow == null) { return; } TaskStack stack = mDisplayContent.mService.mStackIdToStack.get(DOCKED_STACK_ID); final boolean visible = stack != null && stack.isVisibleLocked(); - if (mLastVisibility == visible) { + if (mLastVisibility == visible && !force) { return; } mLastVisibility = visible; @@ -131,5 +130,6 @@ public class DockedStackDividerController { throw new IllegalStateException("Dock divider visibility listener already set!"); } mListener = listener; + reevaluateVisibility(true); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index f25f1e3129b58..de1f4d170e043 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8030,7 +8030,7 @@ public class WindowManagerService extends IWindowManager.Stub case UPDATE_DOCKED_STACK_DIVIDER: { synchronized (mWindowMap) { getDefaultDisplayContentLocked().getDockedDividerController() - .reevaluateVisibility(); + .reevaluateVisibility(false); } } break;