Merge "Fix regression in unfreezing the recent task list" into tm-qpr-dev

This commit is contained in:
Winson Chung
2023-02-09 23:28:19 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 23 deletions

View File

@@ -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. * 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. * Returns null if the touch doesn't fall into a resizing area.

View File

@@ -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_DOCUMENT;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.os.Process.SYSTEM_UID; 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.internal.protolog.ProtoLogGroup.WM_DEBUG_TASKS;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RECENTS;
@@ -215,10 +217,16 @@ class RecentTasks {
int y = (int) ev.getY(); int y = (int) ev.getY();
mService.mH.post(PooledLambda.obtainRunnable((nonArg) -> { mService.mH.post(PooledLambda.obtainRunnable((nonArg) -> {
synchronized (mService.mGlobalLock) { synchronized (mService.mGlobalLock) {
// Unfreeze the task list once we touch down in a task
final RootWindowContainer rac = mService.mRootWindowContainer; final RootWindowContainer rac = mService.mRootWindowContainer;
final DisplayContent dc = rac.getDisplayContent(displayId).mDisplayContent; 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 stack = mService.getTopDisplayFocusedRootTask();
final Task topTask = stack != null ? stack.getTopMostTask() : null; final Task topTask = stack != null ? stack.getTopMostTask() : null;
resetFreezeTaskListReordering(topTask); resetFreezeTaskListReordering(topTask);