Merge "Only dispatch systemUiVisibility when it actually changes" into mnc-dev

This commit is contained in:
Adrian Roos
2015-05-12 21:16:23 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 1 deletions

View File

@@ -312,6 +312,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// tracking calls to View.setSystemUiVisibility()
int mSystemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE;
// last value sent to window manager
private int mLastDispatchedSystemUiVisibility = ~View.SYSTEM_UI_FLAG_VISIBLE;
DisplayMetrics mDisplayMetrics = new DisplayMetrics();
// XXX: gesture research
@@ -2481,7 +2484,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private void notifyUiVisibilityChanged(int vis) {
try {
mWindowManagerService.statusBarVisibilityChanged(vis);
if (mLastDispatchedSystemUiVisibility != vis) {
mWindowManagerService.statusBarVisibilityChanged(vis);
mLastDispatchedSystemUiVisibility = vis;
}
} catch (RemoteException ex) {
}
}

View File

@@ -512,7 +512,10 @@ public class WindowManagerService extends IWindowManager.Stub
int mLayoutSeq = 0;
// Last systemUiVisibility we received from status bar.
int mLastStatusBarVisibility = 0;
// Last systemUiVisibility we dispatched to windows.
int mLastDispatchedSystemUiVisibility = 0;
// State while inside of layoutAndPlaceSurfacesLocked().
boolean mFocusMayChange;
@@ -10955,6 +10958,10 @@ public class WindowManagerService extends IWindowManager.Stub
// TOOD(multidisplay): StatusBar on multiple screens?
void updateStatusBarVisibilityLocked(int visibility) {
if (mLastDispatchedSystemUiVisibility == visibility) {
return;
}
mLastDispatchedSystemUiVisibility = visibility;
mInputManager.setSystemUiVisibility(visibility);
final WindowList windows = getDefaultWindowListLocked();
final int N = windows.size();