summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <>2009-03-24 22:39:49 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 22:39:49 -0700
commitc485a60a32342ff4e5db5c707f28a0816b4c2ff4 (patch)
tree06289386e4586f12b237ce2ce2bba6292f2a5b16
parent3d78f9ab080c582443d1b78d933c899b52588fb2 (diff)
downloadframeworks_base-c485a60a32342ff4e5db5c707f28a0816b4c2ff4.zip
frameworks_base-c485a60a32342ff4e5db5c707f28a0816b4c2ff4.tar.gz
frameworks_base-c485a60a32342ff4e5db5c707f28a0816b4c2ff4.tar.bz2
Automated import from //branches/donutburger/...@142397,142397
-rw-r--r--services/java/com/android/server/WindowManagerService.java82
1 files changed, 49 insertions, 33 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 18fd74f..56f8bc1 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -390,6 +390,8 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
final Rect mTempRect = new Rect();
+ final Configuration mTempConfiguration = new Configuration();
+
public static WindowManagerService main(Context context,
PowerManagerService pm, boolean haveInputMethods) {
WMThread thr = new WMThread(context, pm, haveInputMethods);
@@ -2174,16 +2176,19 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
ActivityInfo.CONFIG_ORIENTATION);
}
}
- return computeNewConfiguration();
+ return computeNewConfigurationLocked();
}
}
// No obvious action we need to take, but if our current
// state mismatches the activity maanager's, update it
if (appConfig != null) {
- Configuration wmConfig = computeNewConfiguration();
- if (wmConfig.diff(appConfig) != 0) {
- return wmConfig;
+ mTempConfiguration.setToDefaults();
+ if (computeNewConfigurationLocked(mTempConfiguration)) {
+ if (appConfig.diff(mTempConfiguration) != 0) {
+ Log.i(TAG, "Config changed: " + mTempConfiguration);
+ return new Configuration(mTempConfiguration);
+ }
}
}
} finally {
@@ -3628,38 +3633,49 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo
public Configuration computeNewConfiguration() {
synchronized (mWindowMap) {
- if (mDisplay == null) {
- return null;
- }
- Configuration config = new Configuration();
- mQueue.getInputConfiguration(config);
- final int dw = mDisplay.getWidth();
- final int dh = mDisplay.getHeight();
- int orientation = Configuration.ORIENTATION_SQUARE;
- if (dw < dh) {
- orientation = Configuration.ORIENTATION_PORTRAIT;
- } else if (dw > dh) {
- orientation = Configuration.ORIENTATION_LANDSCAPE;
- }
- config.orientation = orientation;
- config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
- config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
- mPolicy.adjustConfigurationLw(config);
- Log.i(TAG, "Input configuration changed: " + config);
- long now = SystemClock.uptimeMillis();
- //Log.i(TAG, "Config changing, gc pending: " + mFreezeGcPending + ", now " + now);
- if (mFreezeGcPending != 0) {
- if (now > (mFreezeGcPending+1000)) {
- //Log.i(TAG, "Gc! " + now + " > " + (mFreezeGcPending+1000));
- mH.removeMessages(H.FORCE_GC);
- Runtime.getRuntime().gc();
- mFreezeGcPending = now;
- }
- } else {
+ return computeNewConfigurationLocked();
+ }
+ }
+
+ Configuration computeNewConfigurationLocked() {
+ Configuration config = new Configuration();
+ if (!computeNewConfigurationLocked(config)) {
+ return null;
+ }
+ Log.i(TAG, "Config changed: " + config);
+ long now = SystemClock.uptimeMillis();
+ //Log.i(TAG, "Config changing, gc pending: " + mFreezeGcPending + ", now " + now);
+ if (mFreezeGcPending != 0) {
+ if (now > (mFreezeGcPending+1000)) {
+ //Log.i(TAG, "Gc! " + now + " > " + (mFreezeGcPending+1000));
+ mH.removeMessages(H.FORCE_GC);
+ Runtime.getRuntime().gc();
mFreezeGcPending = now;
}
- return config;
+ } else {
+ mFreezeGcPending = now;
+ }
+ return config;
+ }
+
+ boolean computeNewConfigurationLocked(Configuration config) {
+ if (mDisplay == null) {
+ return false;
}
+ mQueue.getInputConfiguration(config);
+ final int dw = mDisplay.getWidth();
+ final int dh = mDisplay.getHeight();
+ int orientation = Configuration.ORIENTATION_SQUARE;
+ if (dw < dh) {
+ orientation = Configuration.ORIENTATION_PORTRAIT;
+ } else if (dw > dh) {
+ orientation = Configuration.ORIENTATION_LANDSCAPE;
+ }
+ config.orientation = orientation;
+ config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
+ config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
+ mPolicy.adjustConfigurationLw(config);
+ return true;
}
// -------------------------------------------------------------