Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8bb7e488 authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Fix regression setting input windows." into honeycomb

parents 3dd0908a 2e44b078
Loading
Loading
Loading
Loading
+26 −32
Original line number Diff line number Diff line
@@ -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) {