Merge "Fix regression in unfreezing the recent task list" into tm-qpr-dev
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user