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

Commit c031363c authored by Craig Mautner's avatar Craig Mautner Committed by Android Git Automerger
Browse files

am 6f90587e: am 052f7f0d: am 7c2a2ef2: Merge "Track window position with task...

am 6f90587e: am 052f7f0d: am 7c2a2ef2: Merge "Track window position with task position." into klp-dev

* commit '6f90587e':
  Track window position with task position.
parents c93af316 6f90587e
Loading
Loading
Loading
Loading
+34 −14
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ class DisplayContent {
    Region mTouchExcludeRegion = new Region();

    /** Save allocating when retrieving tasks */
    ArrayList<Task> mTmpTasks = new ArrayList<Task>();
    ArrayList<Task> mTaskHistory = new ArrayList<Task>();

    /** Save allocating when calculating rects */
    Rect mTmpRect = new Rect();
@@ -163,7 +163,7 @@ class DisplayContent {
    void moveStack(TaskStack stack, boolean toTop) {
        mStackHistory.remove(stack);
        mStackHistory.add(toTop ? mStackHistory.size() : 0, stack);
        mService.moveStackWindowsLocked(stack);
        mService.moveStackWindowsLocked(this);
    }

    public boolean isPrivate() {
@@ -175,14 +175,35 @@ class DisplayContent {
     * @return All the Tasks, in order, on this display.
     */
    ArrayList<Task> getTasks() {
        mTmpTasks.clear();
        final int numStacks = mStackHistory.size();
        for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) {
            mTmpTasks.addAll(mStackHistory.get(stackNdx).getTasks());
        return mTaskHistory;
    }
        if (WindowManagerService.DEBUG_LAYERS) Slog.i(TAG, "getTasks: mStackHistory=" +
                mStackHistory);
        return mTmpTasks;

    void addTask(Task task, boolean toTop) {
        mTaskHistory.remove(task);

        final int userId = task.mUserId;
        int taskNdx;
        final int numTasks = mTaskHistory.size();
        if (toTop) {
            for (taskNdx = numTasks - 1; taskNdx >= 0; --taskNdx) {
                if (mTaskHistory.get(taskNdx).mUserId == userId) {
                    break;
                }
            }
            ++taskNdx;
        } else {
            for (taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
                if (mTaskHistory.get(taskNdx).mUserId == userId) {
                    break;
                }
            }
        }

        mTaskHistory.add(taskNdx, task);
    }

    void removeTask(Task task) {
        mTaskHistory.remove(task);
    }

    TaskStack getHomeStack() {
@@ -205,10 +226,9 @@ class DisplayContent {

    /** @return The number of tokens in all of the Tasks on this display. */
    int numTokens() {
        getTasks();
        int count = 0;
        for (int taskNdx = mTmpTasks.size() - 1; taskNdx >= 0; --taskNdx) {
            count += mTmpTasks.get(taskNdx).mAppTokens.size();
        for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
            count += mTaskHistory.get(taskNdx).mAppTokens.size();
        }
        return count;
    }
@@ -469,8 +489,8 @@ class DisplayContent {
            pw.println();
            pw.println("  Application tokens in Z order:");
            getTasks();
            for (int taskNdx = mTmpTasks.size() - 1; taskNdx >= 0; --taskNdx) {
                AppTokenList tokens = mTmpTasks.get(taskNdx).mAppTokens;
            for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
                AppTokenList tokens = mTaskHistory.get(taskNdx).mAppTokens;
                for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
                    final AppWindowToken wtoken = tokens.get(tokenNdx);
                    pw.print("  App #"); pw.print(ndx--);
+2 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ public class TaskStack {
        mTasks.add(stackNdx, task);

        task.mStack = this;
        mDisplayContent.addTask(task, toTop);
        return mDisplayContent.moveHomeStackBox(mStackId == HOME_STACK_ID);
    }

@@ -145,6 +146,7 @@ public class TaskStack {
        if (DEBUG_TASK_MOVEMENT) Slog.d(TAG, "removeTask: task=" + task);
        mStackBox.makeDirty();
        mTasks.remove(task);
        mDisplayContent.removeTask(task);
    }

    int remove() {
+3 −5
Original line number Diff line number Diff line
@@ -4733,11 +4733,9 @@ public class WindowManagerService extends IWindowManager.Stub
        return index;
    }

    void moveStackWindowsLocked(TaskStack stack) {
        DisplayContent displayContent = stack.getDisplayContent();

    void moveStackWindowsLocked(DisplayContent displayContent) {
        // First remove all of the windows from the list.
        final ArrayList<Task> tasks = stack.getTasks();
        final ArrayList<Task> tasks = displayContent.getTasks();
        final int numTasks = tasks.size();
        for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
            AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
@@ -4813,7 +4811,7 @@ public class WindowManagerService extends IWindowManager.Stub
                }
                final TaskStack stack = task.mStack;
                stack.moveTaskToBottom(task);
                moveStackWindowsLocked(stack);
                moveStackWindowsLocked(stack.getDisplayContent());
            }
        } finally {
            Binder.restoreCallingIdentity(origId);