summaryrefslogtreecommitdiffstats
path: root/services/java
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2011-01-24 16:58:17 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-24 16:58:17 -0800
commit8bb7e488e2564b75d8d920850891675090debcca (patch)
tree7bdab358f74e37d23c94c7e1c00d24f7c2f10a6c /services/java
parent3dd0908a65095cb6946001ae3039ab87a47b4f33 (diff)
parent2e44b0788f450f06c0d4e3b8dc26aff43ead587d (diff)
downloadframeworks_base-8bb7e488e2564b75d8d920850891675090debcca.zip
frameworks_base-8bb7e488e2564b75d8d920850891675090debcca.tar.gz
frameworks_base-8bb7e488e2564b75d8d920850891675090debcca.tar.bz2
Merge "Fix regression setting input windows." into honeycomb
Diffstat (limited to 'services/java')
-rw-r--r--services/java/com/android/server/WindowManagerService.java58
1 files changed, 26 insertions, 32 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index eeb224c..2c8403c 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -677,8 +677,7 @@ public class WindowManagerService extends IWindowManager.Stub
// stop intercepting input
mDragState.unregister();
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
// free our resources and drop all the object references
mDragState.reset();
@@ -2382,6 +2381,8 @@ public class WindowManagerService extends IWindowManager.Stub
res |= WindowManagerImpl.ADD_FLAG_APP_VISIBLE;
}
+ mInputMonitor.setUpdateInputWindowsNeededLw();
+
boolean focusChanged = false;
if (win.canReceiveKeys()) {
focusChanged = updateFocusedWindowLocked(UPDATE_FOCUS_WILL_ASSIGN_LAYERS,
@@ -2404,7 +2405,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (focusChanged) {
finishUpdateFocusedWindowAfterAssignLayersLocked(false /*updateInputWindows*/);
}
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
if (localLOGV) Slog.v(
TAG, "New client " + client.asBinder()
@@ -2484,7 +2485,7 @@ public class WindowManagerService extends IWindowManager.Stub
updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/);
performLayoutAndPlaceSurfacesLocked();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
if (win.mAppToken != null) {
win.mAppToken.updateReportedVisibilityLocked();
}
@@ -2600,8 +2601,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
}
private static void logSurface(WindowState w, String msg, RuntimeException where) {
@@ -2851,8 +2851,7 @@ public class WindowManagerService extends IWindowManager.Stub
outSurface.release();
}
} catch (Exception e) {
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
Slog.w(TAG, "Exception thrown when creating surface for client "
+ client + " (" + win.mAttrs.getTitle() + ")",
@@ -2996,8 +2995,7 @@ public class WindowManagerService extends IWindowManager.Stub
inTouchMode = mInTouchMode;
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
}
if (configChanged) {
@@ -3380,8 +3378,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
} else {
Slog.w(TAG, "Attempted to remove non-existing token: " + token);
}
@@ -4042,7 +4039,7 @@ public class WindowManagerService extends IWindowManager.Stub
false /*updateInputWindows*/);
performLayoutAndPlaceSurfacesLocked();
}
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
}
}
@@ -4479,8 +4476,9 @@ public class WindowManagerService extends IWindowManager.Stub
updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/);
mLayoutNeeded = true;
+ mInputMonitor.setUpdateInputWindowsNeededLw();
performLayoutAndPlaceSurfacesLocked();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
}
Binder.restoreCallingIdentity(origId);
}
@@ -4517,13 +4515,14 @@ public class WindowManagerService extends IWindowManager.Stub
pos = reAddAppWindowsLocked(pos, wtoken);
if (updateFocusAndLayout) {
+ mInputMonitor.setUpdateInputWindowsNeededLw();
if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/)) {
assignLayersLocked();
}
mLayoutNeeded = true;
performLayoutAndPlaceSurfacesLocked();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
}
}
@@ -4549,13 +4548,14 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ mInputMonitor.setUpdateInputWindowsNeededLw();
if (!updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES,
false /*updateInputWindows*/)) {
assignLayersLocked();
}
mLayoutNeeded = true;
performLayoutAndPlaceSurfacesLocked();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
//dump();
}
@@ -5909,8 +5909,8 @@ public class WindowManagerService extends IWindowManager.Stub
}
/* Updates the cached window information provided to the input dispatcher. */
- public void updateInputWindowsLw() {
- if (!mUpdateInputWindowsNeeded) {
+ public void updateInputWindowsLw(boolean force) {
+ if (!force && !mUpdateInputWindowsNeeded) {
return;
}
mUpdateInputWindowsNeeded = false;
@@ -6060,7 +6060,7 @@ public class WindowManagerService extends IWindowManager.Stub
setUpdateInputWindowsNeededLw();
if (updateInputWindows) {
- updateInputWindowsLw();
+ updateInputWindowsLw(false /*force*/);
}
}
}
@@ -6088,8 +6088,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
window.paused = true;
- setUpdateInputWindowsNeededLw();
- updateInputWindowsLw();
+ updateInputWindowsLw(true /*force*/);
}
}
@@ -6100,8 +6099,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
window.paused = false;
- setUpdateInputWindowsNeededLw();
- updateInputWindowsLw();
+ updateInputWindowsLw(true /*force*/);
}
}
@@ -6577,15 +6575,13 @@ public class WindowManagerService extends IWindowManager.Stub
// the actual drag event dispatch stuff in the dragstate
mDragState.register();
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
if (!mInputManager.transferTouchFocus(callingWin.mInputChannel,
mDragState.mServerChannel)) {
Slog.e(TAG, "Unable to transfer touch focus");
mDragState.unregister();
mDragState = null;
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
return false;
}
@@ -9183,8 +9179,7 @@ public class WindowManagerService extends IWindowManager.Stub
// !!! TODO: ANR the app that has failed to start the drag in time
if (mDragState != null) {
mDragState.unregister();
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
mDragState.reset();
mDragState = null;
}
@@ -9584,7 +9579,7 @@ public class WindowManagerService extends IWindowManager.Stub
// Window frames may have changed. Tell the input dispatcher about it.
mInputMonitor.setUpdateInputWindowsNeededLw();
if (updateInputWindows) {
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(false /*force*/);
}
return mPolicy.finishLayoutLw();
@@ -10858,8 +10853,7 @@ public class WindowManagerService extends IWindowManager.Stub
}
// Finally update all input windows now that the window changes have stabilized.
- mInputMonitor.setUpdateInputWindowsNeededLw();
- mInputMonitor.updateInputWindowsLw();
+ mInputMonitor.updateInputWindowsLw(true /*force*/);
setHoldScreenLocked(holdScreen != null);
if (screenBrightness < 0 || screenBrightness > 1.0f) {