Loading services/core/java/com/android/server/wm/DisplayContent.java +0 −21 Original line number Diff line number Diff line Loading @@ -3098,27 +3098,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp }); } /** * Returns true if the input point is within an app window. */ boolean pointWithinAppWindow(int x, int y) { final int[] targetWindowType = {-1}; final PooledConsumer fn = PooledLambda.obtainConsumer((w, nonArg) -> { if (targetWindowType[0] != -1) { return; } if (w.isOnScreen() && w.isVisible() && w.getFrame().contains(x, y)) { targetWindowType[0] = w.mAttrs.type; return; } }, PooledLambda.__(WindowState.class), mTmpRect); forAllWindows(fn, true /* traverseTopToBottom */); fn.recycle(); return FIRST_APPLICATION_WINDOW <= targetWindowType[0] && targetWindowType[0] <= LAST_APPLICATION_WINDOW; } /** * Find the task whose outside touch area (for resizing) (x, y) falls within. * Returns null if the touch doesn't fall into a resizing area. Loading services/core/java/com/android/server/wm/RecentTasks.java +10 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.os.Process.SYSTEM_UID; import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS; Loading Loading @@ -215,10 +217,16 @@ class RecentTasks { int y = (int) ev.getY(); mService.mH.post(PooledLambda.obtainRunnable((nonArg) -> { synchronized (mService.mGlobalLock) { // Unfreeze the task list once we touch down in a task final RootWindowContainer rac = mService.mRootWindowContainer; final DisplayContent dc = rac.getDisplayContent(displayId).mDisplayContent; if (dc.pointWithinAppWindow(x, y)) { final WindowState win = dc.getTouchableWinAtPointLocked((float) x, (float) y); if (win == null) { return; } // Unfreeze the task list once we touch down in a task final boolean isAppWindowTouch = FIRST_APPLICATION_WINDOW <= win.mAttrs.type && win.mAttrs.type <= LAST_APPLICATION_WINDOW; if (isAppWindowTouch) { final Task stack = mService.getTopDisplayFocusedRootTask(); final Task topTask = stack != null ? stack.getTopMostTask() : null; resetFreezeTaskListReordering(topTask); Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +0 −21 Original line number Diff line number Diff line Loading @@ -3098,27 +3098,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp }); } /** * Returns true if the input point is within an app window. */ boolean pointWithinAppWindow(int x, int y) { final int[] targetWindowType = {-1}; final PooledConsumer fn = PooledLambda.obtainConsumer((w, nonArg) -> { if (targetWindowType[0] != -1) { return; } if (w.isOnScreen() && w.isVisible() && w.getFrame().contains(x, y)) { targetWindowType[0] = w.mAttrs.type; return; } }, PooledLambda.__(WindowState.class), mTmpRect); forAllWindows(fn, true /* traverseTopToBottom */); fn.recycle(); return FIRST_APPLICATION_WINDOW <= targetWindowType[0] && targetWindowType[0] <= LAST_APPLICATION_WINDOW; } /** * Find the task whose outside touch area (for resizing) (x, y) falls within. * Returns null if the touch doesn't fall into a resizing area. Loading
services/core/java/com/android/server/wm/RecentTasks.java +10 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.os.Process.SYSTEM_UID; import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS; Loading Loading @@ -215,10 +217,16 @@ class RecentTasks { int y = (int) ev.getY(); mService.mH.post(PooledLambda.obtainRunnable((nonArg) -> { synchronized (mService.mGlobalLock) { // Unfreeze the task list once we touch down in a task final RootWindowContainer rac = mService.mRootWindowContainer; final DisplayContent dc = rac.getDisplayContent(displayId).mDisplayContent; if (dc.pointWithinAppWindow(x, y)) { final WindowState win = dc.getTouchableWinAtPointLocked((float) x, (float) y); if (win == null) { return; } // Unfreeze the task list once we touch down in a task final boolean isAppWindowTouch = FIRST_APPLICATION_WINDOW <= win.mAttrs.type && win.mAttrs.type <= LAST_APPLICATION_WINDOW; if (isAppWindowTouch) { final Task stack = mService.getTopDisplayFocusedRootTask(); final Task topTask = stack != null ? stack.getTopMostTask() : null; resetFreezeTaskListReordering(topTask); Loading