diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ac4fea8e42e0..ec566bc882ac 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -10978,6 +10978,13 @@ public class WindowManagerService extends IWindowManager.Stub if (mLastDispatchedSystemUiVisibility == visibility) { return; } + final int globalDiff = (visibility ^ mLastDispatchedSystemUiVisibility) + // We are only interested in differences of one of the + // clearable flags... + & View.SYSTEM_UI_CLEARABLE_FLAGS + // ...if it has actually been cleared. + & ~visibility; + mLastDispatchedSystemUiVisibility = visibility; mInputManager.setSystemUiVisibility(visibility); final WindowList windows = getDefaultWindowListLocked(); @@ -10986,12 +10993,7 @@ public class WindowManagerService extends IWindowManager.Stub WindowState ws = windows.get(i); try { int curValue = ws.mSystemUiVisibility; - int diff = curValue ^ visibility; - // We are only interested in differences of one of the - // clearable flags... - diff &= View.SYSTEM_UI_CLEARABLE_FLAGS; - // ...if it has actually been cleared. - diff &= ~visibility; + int diff = (curValue ^ visibility) & globalDiff; int newValue = (curValue&~diff) | (visibility&diff); if (newValue != curValue) { ws.mSeq++; |