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.
|
* 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.
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user