diff options
Diffstat (limited to 'services/java')
-rw-r--r-- | services/java/com/android/server/InputManager.java | 15 | ||||
-rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 161 |
2 files changed, 80 insertions, 96 deletions
diff --git a/services/java/com/android/server/InputManager.java b/services/java/com/android/server/InputManager.java index 3c60a98..b4f46ab 100644 --- a/services/java/com/android/server/InputManager.java +++ b/services/java/com/android/server/InputManager.java @@ -56,8 +56,6 @@ public class InputManager { private final Callbacks mCallbacks; private final Context mContext; private final WindowManagerService mWindowManagerService; - private final PowerManager mPowerManager; - private final PowerManagerService mPowerManagerService; private int mTouchScreenConfig; private int mKeyboardConfig; @@ -85,6 +83,7 @@ public class InputManager { private static native void nativeSetInputDispatchMode(boolean enabled, boolean frozen); private static native void nativeSetFocusedApplication(InputApplication application); private static native void nativePreemptInputDispatch(); + private static native String nativeDump(); // Device class as defined by EventHub. private static final int CLASS_KEYBOARD = 0x00000001; @@ -100,14 +99,9 @@ public class InputManager { static final int INPUT_EVENT_INJECTION_FAILED = 2; static final int INPUT_EVENT_INJECTION_TIMED_OUT = 3; - public InputManager(Context context, - WindowManagerService windowManagerService, - PowerManager powerManager, - PowerManagerService powerManagerService) { + public InputManager(Context context, WindowManagerService windowManagerService) { this.mContext = context; this.mWindowManagerService = windowManagerService; - this.mPowerManager = powerManager; - this.mPowerManagerService = powerManagerService; this.mCallbacks = new Callbacks(); @@ -297,7 +291,10 @@ public class InputManager { } public void dump(PrintWriter pw) { - // TODO + String dumpStr = nativeDump(); + if (dumpStr != null) { + pw.println(dumpStr); + } } private static final class VirtualKeyDefinition { diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 37a2a58..2e28afb 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -332,7 +332,7 @@ public class WindowManagerService extends IWindowManager.Stub /** * Z-ordered (bottom-most first) list of all Window objects. */ - final ArrayList mWindows = new ArrayList(); + final ArrayList<WindowState> mWindows = new ArrayList<WindowState>(); /** * Windows that are being resized. Used so we can tell the client about @@ -630,7 +630,7 @@ public class WindowManagerService extends IWindowManager.Stub "KEEP_SCREEN_ON_FLAG"); mHoldingScreenWakeLock.setReferenceCounted(false); - mInputManager = new InputManager(context, this, pmc, mPowerManager); + mInputManager = new InputManager(context, this); PolicyThread thr = new PolicyThread(mPolicy, this, context, pm); thr.start(); @@ -665,7 +665,7 @@ public class WindowManagerService extends IWindowManager.Stub } } - private void placeWindowAfter(Object pos, WindowState window) { + private void placeWindowAfter(WindowState pos, WindowState window) { final int i = mWindows.indexOf(pos); if (DEBUG_FOCUS || DEBUG_WINDOW_MOVEMENT) Slog.v( TAG, "Adding window " + window + " at " @@ -674,7 +674,7 @@ public class WindowManagerService extends IWindowManager.Stub mWindowsChanged = true; } - private void placeWindowBefore(Object pos, WindowState window) { + private void placeWindowBefore(WindowState pos, WindowState window) { final int i = mWindows.indexOf(pos); if (DEBUG_FOCUS || DEBUG_WINDOW_MOVEMENT) Slog.v( TAG, "Adding window " + window + " at " @@ -687,13 +687,13 @@ public class WindowManagerService extends IWindowManager.Stub //win. used for z ordering the windows in mWindows private int findIdxBasedOnAppTokens(WindowState win) { //use a local variable to cache mWindows - ArrayList localmWindows = mWindows; + ArrayList<WindowState> localmWindows = mWindows; int jmax = localmWindows.size(); if(jmax == 0) { return -1; } for(int j = (jmax-1); j >= 0; j--) { - WindowState wentry = (WindowState)localmWindows.get(j); + WindowState wentry = localmWindows.get(j); if(wentry.mAppToken == win.mAppToken) { return j; } @@ -704,7 +704,7 @@ public class WindowManagerService extends IWindowManager.Stub private void addWindowToListInOrderLocked(WindowState win, boolean addToToken) { final IWindow client = win.mClient; final WindowToken token = win.mToken; - final ArrayList localmWindows = mWindows; + final ArrayList<WindowState> localmWindows = mWindows; final int N = localmWindows.size(); final WindowState attached = win.mAttachedWindow; @@ -749,7 +749,7 @@ public class WindowManagerService extends IWindowManager.Stub // Figure out where the window should go, based on the // order of applications. final int NA = mAppTokens.size(); - Object pos = null; + WindowState pos = null; for (i=NA-1; i>=0; i--) { AppWindowToken t = mAppTokens.get(i); if (t == token) { @@ -769,8 +769,7 @@ public class WindowManagerService extends IWindowManager.Stub // we need to look some more. if (pos != null) { // Move behind any windows attached to this one. - WindowToken atoken = - mTokenMap.get(((WindowState)pos).mClient.asBinder()); + WindowToken atoken = mTokenMap.get(pos.mClient.asBinder()); if (atoken != null) { final int NC = atoken.windows.size(); if (NC > 0) { @@ -796,8 +795,7 @@ public class WindowManagerService extends IWindowManager.Stub if (pos != null) { // Move in front of any windows attached to this // one. - WindowToken atoken = - mTokenMap.get(((WindowState)pos).mClient.asBinder()); + WindowToken atoken = mTokenMap.get(pos.mClient.asBinder()); if (atoken != null) { final int NC = atoken.windows.size(); if (NC > 0) { @@ -812,7 +810,7 @@ public class WindowManagerService extends IWindowManager.Stub // Just search for the start of this layer. final int myLayer = win.mBaseLayer; for (i=0; i<N; i++) { - WindowState w = (WindowState)localmWindows.get(i); + WindowState w = localmWindows.get(i); if (w.mBaseLayer > myLayer) { break; } @@ -829,7 +827,7 @@ public class WindowManagerService extends IWindowManager.Stub // Figure out where window should go, based on layer. final int myLayer = win.mBaseLayer; for (i=N-1; i>=0; i--) { - if (((WindowState)localmWindows.get(i)).mBaseLayer <= myLayer) { + if (localmWindows.get(i).mBaseLayer <= myLayer) { i++; break; } @@ -912,13 +910,13 @@ public class WindowManagerService extends IWindowManager.Stub } int findDesiredInputMethodWindowIndexLocked(boolean willMove) { - final ArrayList localmWindows = mWindows; + final ArrayList<WindowState> localmWindows = mWindows; final int N = localmWindows.size(); WindowState w = null; int i = N; while (i > 0) { i--; - w = (WindowState)localmWindows.get(i); + w = localmWindows.get(i); //Slog.i(TAG, "Checking window @" + i + " " + w + " fl=0x" // + Integer.toHexString(w.mAttrs.flags)); @@ -933,7 +931,7 @@ public class WindowManagerService extends IWindowManager.Stub if (!willMove && w.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING && i > 0) { - WindowState wb = (WindowState)localmWindows.get(i-1); + WindowState wb = localmWindows.get(i-1); if (wb.mAppToken == w.mAppToken && canBeImeTarget(wb)) { i--; w = wb; @@ -963,7 +961,7 @@ public class WindowManagerService extends IWindowManager.Stub int pos = 0; pos = localmWindows.indexOf(curTarget); while (pos >= 0) { - WindowState win = (WindowState)localmWindows.get(pos); + WindowState win = localmWindows.get(pos); if (win.mAppToken != token) { break; } @@ -1068,7 +1066,7 @@ public class WindowManagerService extends IWindowManager.Stub int wi = imw.mChildWindows.size(); while (wi > 0) { wi--; - WindowState cw = (WindowState)imw.mChildWindows.get(wi); + WindowState cw = imw.mChildWindows.get(wi); cw.mAnimLayer = cw.mLayer + adj; if (DEBUG_LAYERS) Slog.v(TAG, "IM win " + cw + " anim layer: " + cw.mAnimLayer); @@ -1094,7 +1092,7 @@ public class WindowManagerService extends IWindowManager.Stub int NC = win.mChildWindows.size(); while (NC > 0) { NC--; - WindowState cw = (WindowState)win.mChildWindows.get(NC); + WindowState cw = win.mChildWindows.get(NC); int cpos = mWindows.indexOf(cw); if (cpos >= 0) { if (cpos < interestingPos) interestingPos--; @@ -1146,7 +1144,7 @@ public class WindowManagerService extends IWindowManager.Stub if (pos >= 0) { final AppWindowToken targetAppToken = mInputMethodTarget.mAppToken; if (pos < mWindows.size()) { - WindowState wp = (WindowState)mWindows.get(pos); + WindowState wp = mWindows.get(pos); if (wp == mInputMethodWindow) { pos++; } @@ -1190,14 +1188,14 @@ public class WindowManagerService extends IWindowManager.Stub // located here, and contiguous. final int N = mWindows.size(); WindowState firstImWin = imPos < N - ? (WindowState)mWindows.get(imPos) : null; + ? mWindows.get(imPos) : null; // Figure out the actual input method window that should be // at the bottom of their stack. WindowState baseImWin = imWin != null ? imWin : mInputMethodDialogs.get(0); if (baseImWin.mChildWindows.size() > 0) { - WindowState cw = (WindowState)baseImWin.mChildWindows.get(0); + WindowState cw = baseImWin.mChildWindows.get(0); if (cw.mSubLayer < 0) baseImWin = cw; } @@ -1206,7 +1204,7 @@ public class WindowManagerService extends IWindowManager.Stub // First find the top IM window. int pos = imPos+1; while (pos < N) { - if (!((WindowState)mWindows.get(pos)).mIsImWindow) { + if (!(mWindows.get(pos)).mIsImWindow) { break; } pos++; @@ -1214,7 +1212,7 @@ public class WindowManagerService extends IWindowManager.Stub pos++; // Now there should be no more input method windows above. while (pos < N) { - if (((WindowState)mWindows.get(pos)).mIsImWindow) { + if ((mWindows.get(pos)).mIsImWindow) { break; } pos++; @@ -1302,7 +1300,7 @@ public class WindowManagerService extends IWindowManager.Stub // First find top-most window that has asked to be on top of the // wallpaper; all wallpapers go behind it. - final ArrayList localmWindows = mWindows; + final ArrayList<WindowState> localmWindows = mWindows; int N = localmWindows.size(); WindowState w = null; WindowState foundW = null; @@ -1312,7 +1310,7 @@ public class WindowManagerService extends IWindowManager.Stub int i = N; while (i > 0) { i--; - w = (WindowState)localmWindows.get(i); + w = localmWindows.get(i); if ((w.mAttrs.type == WindowManager.LayoutParams.TYPE_WALLPAPER)) { if (topCurW == null) { topCurW = w; @@ -1483,7 +1481,7 @@ public class WindowManagerService extends IWindowManager.Stub // AND any starting window associated with it, AND below the // maximum layer the policy allows for wallpapers. while (foundI > 0) { - WindowState wb = (WindowState)localmWindows.get(foundI-1); + WindowState wb = localmWindows.get(foundI-1); if (wb.mBaseLayer < maxLayer && wb.mAttachedWindow != foundW && (wb.mAttrs.type != TYPE_APPLICATION_STARTING || @@ -1507,7 +1505,7 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Okay i is the position immediately above the wallpaper. Look at // what is below it for later. - foundW = foundI > 0 ? (WindowState)localmWindows.get(foundI-1) : null; + foundW = foundI > 0 ? localmWindows.get(foundI-1) : null; } if (visible) { @@ -1566,7 +1564,7 @@ public class WindowManagerService extends IWindowManager.Stub if (wallpaper == foundW) { foundI--; foundW = foundI > 0 - ? (WindowState)localmWindows.get(foundI-1) : null; + ? localmWindows.get(foundI-1) : null; continue; } @@ -2403,6 +2401,8 @@ public class WindowManagerService extends IWindowManager.Stub outSurface.release(); } } catch (Exception e) { + mInputMonitor.updateInputWindowsLw(); + Slog.w(TAG, "Exception thrown when creating surface for client " + client + " (" + win.mAttrs.getTitle() + ")", e); @@ -2449,7 +2449,6 @@ public class WindowManagerService extends IWindowManager.Stub applyAnimationLocked(win, transit, false)) { focusMayChange = true; win.mExiting = true; - mInputMonitor.windowIsBecomingInvisibleLw(win); } else if (win.isAnimating()) { // Currently in a hide animation... turn this into // an exit. @@ -2544,6 +2543,8 @@ public class WindowManagerService extends IWindowManager.Stub TAG, "Relayout of " + win + ": focusMayChange=" + focusMayChange); inTouchMode = mInTouchMode; + + mInputMonitor.updateInputWindowsLw(); } if (configChanged) { @@ -2999,7 +3000,7 @@ public class WindowManagerService extends IWindowManager.Stub public int getOrientationFromWindowsLocked() { int pos = mWindows.size() - 1; while (pos >= 0) { - WindowState wtoken = (WindowState) mWindows.get(pos); + WindowState wtoken = mWindows.get(pos); pos--; if (wtoken.mAppToken != null) { // We hit an application window. so the orientation will be determined by the @@ -3553,7 +3554,6 @@ public class WindowManagerService extends IWindowManager.Stub applyAnimationLocked(win, WindowManagerPolicy.TRANSIT_EXIT, false); } - mInputMonitor.windowIsBecomingInvisibleLw(win); changed = true; } } @@ -3581,6 +3581,8 @@ public class WindowManagerService extends IWindowManager.Stub if (performLayout) { updateFocusedWindowLocked(UPDATE_FOCUS_WILL_PLACE_SURFACES); performLayoutAndPlaceSurfacesLocked(); + } else { + mInputMonitor.updateInputWindowsLw(); } } } @@ -3868,7 +3870,7 @@ public class WindowManagerService extends IWindowManager.Stub int j = win.mChildWindows.size(); while (j > 0) { j--; - WindowState cwin = (WindowState)win.mChildWindows.get(j); + WindowState cwin = win.mChildWindows.get(j); if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG, "Tmp removing child window " + cwin); mWindows.remove(cwin); @@ -3896,7 +3898,7 @@ public class WindowManagerService extends IWindowManager.Stub int i = NW; while (i > 0) { i--; - WindowState win = (WindowState)mWindows.get(i); + WindowState win = mWindows.get(i); if (win.getAppToken() != null) { return i+1; } @@ -3922,7 +3924,7 @@ public class WindowManagerService extends IWindowManager.Stub int j = win.mChildWindows.size(); while (j > 0) { j--; - WindowState cwin = (WindowState)win.mChildWindows.get(j); + WindowState cwin = win.mChildWindows.get(j); if (cwin.mSubLayer >= 0) { for (int pos=NW-1; pos>=0; pos--) { if (mWindows.get(pos) == cwin) { @@ -3950,7 +3952,7 @@ public class WindowManagerService extends IWindowManager.Stub final int NCW = win.mChildWindows.size(); boolean added = false; for (int j=0; j<NCW; j++) { - WindowState cwin = (WindowState)win.mChildWindows.get(j); + WindowState cwin = win.mChildWindows.get(j); if (!added && cwin.mSubLayer >= 0) { if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG, "Re-adding child window at " + index + ": " + cwin); @@ -4234,7 +4236,7 @@ public class WindowManagerService extends IWindowManager.Stub public void closeSystemDialogs(String reason) { synchronized(mWindowMap) { for (int i=mWindows.size()-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mSurface != null) { try { w.mClient.closeSystemDialogs(reason); @@ -4418,7 +4420,7 @@ public class WindowManagerService extends IWindowManager.Stub // have been drawn. final int N = mWindows.size(); for (int i=0; i<N; i++) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.isVisibleLw() && !w.mObscured && (w.mOrientationChanging || !w.isDrawnLw())) { return; @@ -4531,7 +4533,7 @@ public class WindowManagerService extends IWindowManager.Stub Surface.setOrientation(0, rotation, animFlags); } for (int i=mWindows.size()-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mSurface != null) { w.mOrientationChanging = true; } @@ -4687,11 +4689,10 @@ public class WindowManagerService extends IWindowManager.Stub boolean result = true; - Object[] windows; + WindowState[] windows; synchronized (mWindowMap) { - windows = new Object[mWindows.size()]; //noinspection unchecked - windows = mWindows.toArray(windows); + windows = mWindows.toArray(new WindowState[mWindows.size()]); } BufferedWriter out = null; @@ -4703,7 +4704,7 @@ public class WindowManagerService extends IWindowManager.Stub final int count = windows.length; for (int i = 0; i < count; i++) { - final WindowState w = (WindowState) windows[i]; + final WindowState w = windows[i]; out.write(Integer.toHexString(System.identityHashCode(w))); out.write(' '); out.append(w.mAttrs.getTitle()); @@ -4856,11 +4857,11 @@ public class WindowManagerService extends IWindowManager.Stub } synchronized (mWindowMap) { - final ArrayList windows = mWindows; + final ArrayList<WindowState> windows = mWindows; final int count = windows.size(); for (int i = 0; i < count; i++) { - WindowState w = (WindowState) windows.get(i); + WindowState w = windows.get(i); if (System.identityHashCode(w) == hashCode) { return w; } @@ -5094,7 +5095,7 @@ public class WindowManagerService extends IWindowManager.Stub private WindowState getWindowStateForInputChannelLocked(InputChannel inputChannel) { int windowCount = mWindows.size(); for (int i = 0; i < windowCount; i++) { - WindowState windowState = (WindowState) mWindows.get(i); + WindowState windowState = mWindows.get(i); if (windowState.mInputChannel == inputChannel) { return windowState; } @@ -5110,10 +5111,10 @@ public class WindowManagerService extends IWindowManager.Stub // As an optimization, we could try to prune the list of windows but this turns // out to be difficult because only the native code knows for sure which window // currently has touch focus. - final ArrayList windows = mWindows; + final ArrayList<WindowState> windows = mWindows; final int N = windows.size(); for (int i = N - 1; i >= 0; i--) { - final WindowState child = (WindowState) windows.get(i); + final WindowState child = windows.get(i); if (child.mInputChannel == null || child.mRemoved) { // Skip this window because it cannot possibly receive input. continue; @@ -5258,17 +5259,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - public void windowIsBecomingInvisibleLw(WindowState window) { - // The window is becoming invisible. Preempt input dispatch in progress - // so that the next window below can receive focus. - if (window == mInputFocus) { - mInputFocus = null; - preemptInputDispatchLw(); - } - - updateInputWindowsLw(); - } - /* Tells the dispatcher to stop waiting for its current synchronous event targets. * Essentially, just makes those dispatches asynchronous so a new dispatch cycle * can begin. @@ -5779,7 +5769,7 @@ public class WindowManagerService extends IWindowManager.Stub final WindowManager.LayoutParams mAttrs = new WindowManager.LayoutParams(); final DeathRecipient mDeathRecipient; final WindowState mAttachedWindow; - final ArrayList mChildWindows = new ArrayList(); + final ArrayList<WindowState> mChildWindows = new ArrayList<WindowState>(); final int mBaseLayer; final int mSubLayer; final boolean mLayoutAttached; @@ -6335,10 +6325,8 @@ public class WindowManagerService extends IWindowManager.Stub int i = mChildWindows.size(); while (i > 0) { i--; - WindowState c = (WindowState)mChildWindows.get(i); + WindowState c = mChildWindows.get(i); c.mAttachedHidden = true; - - mInputMonitor.windowIsBecomingInvisibleLw(c); } if (mReportDestroySurface) { @@ -6448,7 +6436,7 @@ public class WindowManagerService extends IWindowManager.Stub int i = mChildWindows.size(); while (i > 0) { i--; - WindowState c = (WindowState)mChildWindows.get(i); + WindowState c = mChildWindows.get(i); if (c.mAttachedHidden) { c.mAttachedHidden = false; if (c.mSurface != null) { @@ -6621,7 +6609,7 @@ public class WindowManagerService extends IWindowManager.Stub final int N = mChildWindows.size(); for (int i=0; i<N; i++) { - ((WindowState)mChildWindows.get(i)).finishExit(); + mChildWindows.get(i).finishExit(); } if (!mExiting) { @@ -6646,10 +6634,6 @@ public class WindowManagerService extends IWindowManager.Stub Slog.w(TAG, "Error hiding surface in " + this, e); } mLastHidden = true; - - for (int i=0; i<N; i++) { - mInputMonitor.windowIsBecomingInvisibleLw((WindowState)mChildWindows.get(i)); - } } mExiting = false; if (mRemoveOnExit) { @@ -7554,7 +7538,7 @@ public class WindowManagerService extends IWindowManager.Stub final int N = windows.size(); for (int i=0; i<N; i++) { - ((WindowState)windows.get(i)).finishExit(); + windows.get(i).finishExit(); } updateReportedVisibilityLocked(); @@ -7980,7 +7964,7 @@ public class WindowManagerService extends IWindowManager.Stub int i = mWindows.size(); while (i > 0) { i--; - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mOrientationChanging) { w.mOrientationChanging = false; Slog.w(TAG, "Force clearing orientation change: " + w); @@ -8119,7 +8103,7 @@ public class WindowManagerService extends IWindowManager.Stub int idx = findDesiredInputMethodWindowIndexLocked(false); WindowState imFocus; if (idx > 0) { - imFocus = (WindowState)mWindows.get(idx-1); + imFocus = mWindows.get(idx-1); if (imFocus != null) { if (imFocus.mSession.mClient != null && imFocus.mSession.mClient.asBinder() == client.asBinder()) { @@ -8177,9 +8161,9 @@ public class WindowManagerService extends IWindowManager.Stub // First remove all existing app windows. i=0; while (i < NW) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mAppToken != null) { - WindowState win = (WindowState)mWindows.remove(i); + WindowState win = mWindows.remove(i); mWindowsChanged = true; if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG, "Rebuild removing window: " + win); @@ -8227,7 +8211,7 @@ public class WindowManagerService extends IWindowManager.Stub int i; for (i=0; i<N; i++) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mBaseLayer == curBaseLayer || w.mIsImWindow || (i > 0 && w.mIsWallpaper)) { curLayer += WINDOW_LAYER_MULTIPLIER; @@ -8352,7 +8336,7 @@ public class WindowManagerService extends IWindowManager.Stub // to another window). int topAttached = -1; for (i = N-1; i >= 0; i--) { - WindowState win = (WindowState) mWindows.get(i); + WindowState win = mWindows.get(i); // Don't do layout of a window if it is not visible, or // soon won't be visible, to avoid wasting time and funky @@ -8401,7 +8385,7 @@ public class WindowManagerService extends IWindowManager.Stub // XXX does not deal with windows that are attached to windows // that are themselves attached. for (i = topAttached; i >= 0; i--) { - WindowState win = (WindowState) mWindows.get(i); + WindowState win = mWindows.get(i); // If this view is GONE, then skip it -- keep the current // frame, and let the caller know so they can ignore it @@ -8548,7 +8532,7 @@ public class WindowManagerService extends IWindowManager.Stub final int N = mWindows.size(); for (i=N-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); final WindowManager.LayoutParams attrs = w.mAttrs; @@ -8981,7 +8965,7 @@ public class WindowManagerService extends IWindowManager.Stub // Clear them out. forceHiding = false; for (i=N-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); if (w.mSurface != null) { final WindowManager.LayoutParams attrs = w.mAttrs; if (mPolicy.doesForceHide(w, attrs) && w.isVisibleLw()) { @@ -9031,6 +9015,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** ANIM STEP: changes=0x" + Integer.toHexString(changes)); + mInputMonitor.updateInputWindowsLw(); } while (changes != 0); // THIRD LOOP: Update the surfaces of all windows. @@ -9047,7 +9032,7 @@ public class WindowManagerService extends IWindowManager.Stub final int N = mWindows.size(); for (i=N-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); boolean displayed = false; final WindowManager.LayoutParams attrs = w.mAttrs; @@ -9227,7 +9212,6 @@ public class WindowManagerService extends IWindowManager.Stub Slog.w(TAG, "Exception hiding surface in " + w); } } - mInputMonitor.windowIsBecomingInvisibleLw(w); } // If we are waiting for this window to handle an // orientation change, well, it is hidden, so @@ -9487,6 +9471,8 @@ public class WindowManagerService extends IWindowManager.Stub Slog.e(TAG, "Unhandled exception in Window Manager", e); } + mInputMonitor.updateInputWindowsLw(); + Surface.closeTransaction(); if (DEBUG_ORIENTATION && mDisplayFrozen) Slog.v(TAG, @@ -9612,6 +9598,8 @@ public class WindowManagerService extends IWindowManager.Stub requestAnimationLocked(currentTime+(1000/60)-SystemClock.uptimeMillis()); } + mInputMonitor.updateInputWindowsLw(); + if (DEBUG_FREEZE) Slog.v(TAG, "Layout: mDisplayFrozen=" + mDisplayFrozen + " holdScreen=" + holdScreen); if (!mDisplayFrozen) { @@ -9718,7 +9706,7 @@ public class WindowManagerService extends IWindowManager.Stub boolean leakedSurface = false; Slog.i(TAG, "Out of memory for surface! Looking for leaks..."); for (int i=0; i<N; i++) { - WindowState ws = (WindowState)mWindows.get(i); + WindowState ws = mWindows.get(i); if (ws.mSurface != null) { if (!mSessions.contains(ws.mSession)) { Slog.w(TAG, "LEAKED SURFACE (session doesn't exist): " @@ -9750,7 +9738,7 @@ public class WindowManagerService extends IWindowManager.Stub Slog.w(TAG, "No leaked surfaces; killing applicatons!"); SparseIntArray pidCandidates = new SparseIntArray(); for (int i=0; i<N; i++) { - WindowState ws = (WindowState)mWindows.get(i); + WindowState ws = mWindows.get(i); if (ws.mSurface != null) { pidCandidates.append(ws.mSession.mPid, ws.mSession.mPid); } @@ -9842,7 +9830,7 @@ public class WindowManagerService extends IWindowManager.Stub ? mAppTokens.get(nextAppIndex) : null; while (i >= 0) { - win = (WindowState)mWindows.get(i); + win = mWindows.get(i); if (localLOGV || DEBUG_FOCUS) Slog.v( TAG, "Looking for focus: " + i @@ -9990,14 +9978,13 @@ public class WindowManagerService extends IWindowManager.Stub return; } - pw.println("Input Dispatcher State:"); mInputManager.dump(pw); pw.println(" "); synchronized(mWindowMap) { pw.println("Current Window Manager state:"); for (int i=mWindows.size()-1; i>=0; i--) { - WindowState w = (WindowState)mWindows.get(i); + WindowState w = mWindows.get(i); pw.print(" Window #"); pw.print(i); pw.print(' '); pw.print(w); pw.println(":"); w.dump(pw, " "); |