summaryrefslogtreecommitdiffstats
path: root/services/java/com
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-04-04 12:48:24 -0700
committerDianne Hackborn <hackbod@google.com>2012-04-04 16:00:45 -0700
commitf87d19621dc2a30232bba1f51862a0b671eb9729 (patch)
tree8bf53cb17770100b6fd1c1f31f1b27eb7121ce3e /services/java/com
parent5b86de1e6b8f597ab2444de0f2274546321f1810 (diff)
downloadframeworks_base-f87d19621dc2a30232bba1f51862a0b671eb9729.zip
frameworks_base-f87d19621dc2a30232bba1f51862a0b671eb9729.tar.gz
frameworks_base-f87d19621dc2a30232bba1f51862a0b671eb9729.tar.bz2
Clean up status bar, system bar, navigation bar management.
The status bar and navigation bar are two completely separate elements, with their own semantics. The system bar now classifies itself as a navigation bar, since that is really how it behaves. This required rewriting the HDMI resizing code, so that it is all done by PhoneWindowManager since that is what is responsible for the size of the navigation bar (and thus now system bar). This actually gets rid of a fair amount of code, and means we can also do the same thing for a pure navigation bar. Likewise the system bar now has the navigation bar ability to be hidden when requested by system UI flags. To get the behavior we want on Xoom, we only allow the nav bar to be hidden when it will help provide a better aspect ratio for showing widescreen videos. Finally the nav/system bar now animates when hidden and shown. Change-Id: Ie927154b68376a0b61802f99171ff56b8da92e7a
Diffstat (limited to 'services/java/com')
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java25
-rw-r--r--services/java/com/android/server/wm/WindowState.java6
2 files changed, 20 insertions, 11 deletions
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 7eca401..654cfdf 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -5109,7 +5109,7 @@ public class WindowManagerService extends IWindowManager.Stub
mPolicy.enableScreenAfterBoot();
// Make sure the last requested orientation has been applied.
- updateRotationUnchecked(false);
+ updateRotationUnchecked(false, false);
}
public void showBootMessage(final CharSequence msg, final boolean always) {
@@ -5383,7 +5383,7 @@ public class WindowManagerService extends IWindowManager.Stub
mPolicy.setUserRotationMode(WindowManagerPolicy.USER_ROTATION_LOCKED,
rotation == -1 ? mRotation : rotation);
- updateRotationUnchecked(false);
+ updateRotationUnchecked(false, false);
}
/**
@@ -5399,7 +5399,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_ORIENTATION) Slog.v(TAG, "thawRotation: mRotation=" + mRotation);
mPolicy.setUserRotationMode(WindowManagerPolicy.USER_ROTATION_FREE, 777); // rot not used
- updateRotationUnchecked(false);
+ updateRotationUnchecked(false, false);
}
/**
@@ -5409,8 +5409,8 @@ public class WindowManagerService extends IWindowManager.Stub
* such that the current rotation might need to be updated, such as when the
* device is docked or rotated into a new posture.
*/
- public void updateRotation(boolean alwaysSendConfiguration) {
- updateRotationUnchecked(alwaysSendConfiguration);
+ public void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout) {
+ updateRotationUnchecked(alwaysSendConfiguration, forceRelayout);
}
/**
@@ -5440,8 +5440,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- public void updateRotationUnchecked(
- boolean alwaysSendConfiguration) {
+ public void updateRotationUnchecked(boolean alwaysSendConfiguration, boolean forceRelayout) {
if(DEBUG_ORIENTATION) Slog.v(TAG, "updateRotationUnchecked("
+ "alwaysSendConfiguration=" + alwaysSendConfiguration + ")");
@@ -5449,6 +5448,10 @@ public class WindowManagerService extends IWindowManager.Stub
boolean changed;
synchronized(mWindowMap) {
changed = updateRotationUncheckedLocked(false);
+ if (!changed || forceRelayout) {
+ mLayoutNeeded = true;
+ performLayoutAndPlaceSurfacesLocked();
+ }
}
if (changed || alwaysSendConfiguration) {
@@ -6641,7 +6644,7 @@ public class WindowManagerService extends IWindowManager.Stub
mInputManager.setDisplaySize(Display.DEFAULT_DISPLAY,
mDisplay.getRawWidth(), mDisplay.getRawHeight(),
mDisplay.getRawExternalWidth(), mDisplay.getRawExternalHeight());
- mPolicy.setInitialDisplaySize(mInitialDisplayWidth, mInitialDisplayHeight);
+ mPolicy.setInitialDisplaySize(mDisplay, mInitialDisplayWidth, mInitialDisplayHeight);
}
try {
@@ -7361,7 +7364,7 @@ public class WindowManagerService extends IWindowManager.Stub
mBaseDisplayWidth = width;
mBaseDisplayHeight = height;
}
- mPolicy.setInitialDisplaySize(mBaseDisplayWidth, mBaseDisplayHeight);
+ mPolicy.setInitialDisplaySize(mDisplay, mBaseDisplayWidth, mBaseDisplayHeight);
mLayoutNeeded = true;
@@ -7393,8 +7396,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- public boolean canStatusBarHide() {
- return mPolicy.canStatusBarHide();
+ public boolean hasSystemNavBar() {
+ return mPolicy.hasSystemNavBar();
}
// -------------------------------------------------------------
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index 05797a4..a4708d3 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -870,6 +870,7 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return true;
}
+ @Override
public boolean hideLw(boolean doAnimation) {
return hideLw(doAnimation, true);
}
@@ -912,6 +913,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
return true;
}
+ @Override
+ public boolean isAlive() {
+ return mClient.asBinder().isBinderAlive();
+ }
+
private static void applyInsets(Region outRegion, Rect frame, Rect inset) {
outRegion.set(
frame.left + inset.left, frame.top + inset.top,