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

Commit f81b9087 authored by Craig Mautner's avatar Craig Mautner
Browse files

Remove AppTokenIterator from DisplayContent.

Simplify accessing successive AppWindowTokens from different
TaskLists.

Change-Id: Icf6265dd6c7953c9c770c97e1342f0f81256c017
parent 97786e14
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -946,20 +946,19 @@ final class ActivityRecord {
        }
    }

    @Override
    public String toString() {
        if (stringName != null) {
            return stringName;
            return stringName + " t" + task.taskId + "}";
        }
        StringBuilder sb = new StringBuilder(128);
        sb.append("ActivityRecord{");
        sb.append(Integer.toHexString(System.identityHashCode(this)));
        sb.append(" t");
        sb.append(task.taskId);
        sb.append(" u");
        sb.append(userId);
        sb.append(' ');
        sb.append(intent.getComponent().flattenToShortString());
        sb.append('}');
        return stringName = sb.toString();
        stringName = sb.toString();
        return toString();
    }
}
+15 −102
Original line number Diff line number Diff line
@@ -16,17 +16,12 @@

package com.android.server.wm;

import static com.android.server.wm.WindowManagerService.FORWARD_ITERATOR;
import static com.android.server.wm.WindowManagerService.REVERSE_ITERATOR;

import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;

class DisplayContentList extends ArrayList<DisplayContent> {
}
@@ -91,8 +86,6 @@ class DisplayContent {
    ArrayList<TaskList> mTaskLists = new ArrayList<TaskList>();
    SparseArray<TaskList> mTaskIdToTaskList = new SparseArray<TaskList>();

    private final AppTokenIterator mTmpAppIterator = new AppTokenIterator();

    /**
     * @param display May not be null.
     */
@@ -174,94 +167,12 @@ class DisplayContent {
        wtoken.groupId = newTaskId;
    }

    /**
     * Return the utility iterator so we don't have to construct new iterators every time we
     * iterate.
     * NOTE: Do not ever nest this call or you will have a bad time!
     * @param reverse Direction of iterator.
     * @return The utility iterator.
     */
    AppTokenIterator getTmpAppIterator(boolean reverse) {
        mTmpAppIterator.reset(reverse);
        return mTmpAppIterator;
    }

    class AppTokenIterator implements Iterator<AppWindowToken> {
        boolean mReverse;
        int mTasksNdx;
        int mActivityNdx;
        TaskList mTaskList;

        public AppTokenIterator() {
            this(FORWARD_ITERATOR);
        }

        public AppTokenIterator(boolean reverse) {
            reset(reverse);
        }

        void reset(boolean reverse) {
            mReverse = reverse;
            mTasksNdx = reverse ? mTaskLists.size() - 1 : 0;
            getNextTaskList();
        }

        private void getNextTaskList() {
            if (mReverse) {
                if (mTasksNdx >= 0) {
                    mTaskList = mTaskLists.get(mTasksNdx);
                    --mTasksNdx;
                    mActivityNdx = mTaskList.mAppTokens.size() - 1;
                }
            } else {
                if (mTasksNdx < mTaskLists.size()) {
                    mTaskList = mTaskLists.get(mTasksNdx);
                    ++mTasksNdx;
                    mActivityNdx = 0;
                }
            }
        }

        @Override
        public boolean hasNext() {
            if (mTaskList == null) {
                return false;
            }
            if (mReverse) {
                return mActivityNdx >= 0;
            }
            return mActivityNdx < mTaskList.mAppTokens.size();
        }

        @Override
        public AppWindowToken next() {
            if (hasNext()) {
                AppWindowToken wtoken = mTaskList.mAppTokens.get(mActivityNdx);
                mActivityNdx += mReverse ? -1 : 1;
                if (!hasNext()) {
                    getNextTaskList();
                }
                return wtoken;
            }
            throw new NoSuchElementException();
        }

        @Override
        public void remove() {
            throw new IllegalArgumentException();
        }

        int size() {
            int size = 0;
            for (int i = mTaskLists.size() - 1; i >= 0; --i) {
                size += mTaskLists.get(i).mAppTokens.size();
            }
            return size;
        }

        @Override public String toString() {
            return mTaskLists.toString();
    int numTokens() {
        int count = 0;
        for (int taskNdx = mTaskLists.size() - 1; taskNdx >= 0; --taskNdx) {
            count += mTaskLists.get(taskNdx).mAppTokens.size();
        }
        return count;
    }

    public void dump(String prefix, PrintWriter pw) {
@@ -288,18 +199,20 @@ class DisplayContent {
            pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
            pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
            pw.print(subPrefix); pw.print("layoutNeeded="); pw.println(layoutNeeded);
            AppTokenIterator iterator = getTmpAppIterator(REVERSE_ITERATOR);
            int ndx = iterator.size() - 1;
            if (ndx >= 0) {
            int ndx = numTokens();
            if (ndx > 0) {
                pw.println();
                pw.println("  Application tokens in Z order:");
                while (iterator.hasNext()) {
                    AppWindowToken wtoken = iterator.next();
                for (int taskNdx = mTaskLists.size() - 1; taskNdx >= 0; --taskNdx) {
                    AppTokenList tokens = mTaskLists.get(taskNdx).mAppTokens;
                    for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx) {
                        final AppWindowToken wtoken = tokens.get(tokenNdx);
                        pw.print("  App #"); pw.print(ndx--);
                                pw.print(' '); pw.print(wtoken); pw.println(":");
                        wtoken.dump(pw, "    ");
                    }
                }
            }
            if (mExitingTokens.size() > 0) {
                pw.println();
                pw.println("  Exiting tokens:");
+52 −47
Original line number Diff line number Diff line
@@ -10,8 +10,6 @@ import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPA
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_FORCE_HIDING_CHANGED;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_ORIENTATION_CHANGE_COMPLETE;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPAPER_ACTION_PENDING;
import static com.android.server.wm.WindowManagerService.FORWARD_ITERATOR;
import static com.android.server.wm.WindowManagerService.REVERSE_ITERATOR;

import android.content.Context;
import android.os.Debug;
@@ -23,12 +21,10 @@ import android.util.SparseIntArray;
import android.util.TimeUtils;
import android.util.TypedValue;
import android.view.Display;
import android.view.Surface;
import android.view.SurfaceControl;
import android.view.WindowManagerPolicy;
import android.view.animation.Animation;

import com.android.server.wm.DisplayContent.AppTokenIterator;
import com.android.server.wm.WindowManagerService.DisplayContentsIterator;
import com.android.server.wm.WindowManagerService.LayoutFields;

@@ -178,9 +174,13 @@ public class WindowAnimator {
    private void updateAppWindowsLocked(int displayId) {
        int i;
        final DisplayContent displayContent = mService.getDisplayContentLocked(displayId);
        AppTokenIterator iterator = displayContent.getTmpAppIterator(FORWARD_ITERATOR);
        while (iterator.hasNext()) {
            final AppWindowAnimator appAnimator = iterator.next().mAppAnimator;
        final ArrayList<TaskList> tasks = displayContent.mTaskLists;
        final int numTasks = tasks.size();
        for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
            final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
            final int numTokens = tokens.size();
            for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
                final AppWindowAnimator appAnimator = tokens.get(tokenNdx).mAppAnimator;
                final boolean wasAnimating = appAnimator.animation != null
                        && appAnimator.animation != AppWindowAnimator.sDummyAnimation;
                if (appAnimator.stepAnimationLocked(mCurrentTime)) {
@@ -193,6 +193,7 @@ public class WindowAnimator {
                            "updateWindowsApps...: done animating " + appAnimator.mAppToken);
                }
            }
        }

        final AppTokenList exitingAppTokens = displayContent.mExitingAppTokens;
        final int NEAT = exitingAppTokens.size();
@@ -461,10 +462,13 @@ public class WindowAnimator {
    private void testTokenMayBeDrawnLocked(int displayId) {
        // See if any windows have been drawn, so they (and others
        // associated with them) can now be shown.
        AppTokenIterator iterator =
                mService.getDisplayContentLocked(displayId).getTmpAppIterator(FORWARD_ITERATOR);
        while (iterator.hasNext()) {
            AppWindowToken wtoken = iterator.next();
        final ArrayList<TaskList> tasks = mService.getDisplayContentLocked(displayId).mTaskLists;
        final int numTasks = tasks.size();
        for (int taskNdx = 0; taskNdx < numTasks; ++taskNdx) {
            final AppTokenList tokens = tasks.get(taskNdx).mAppTokens;
            final int numTokens = tokens.size();
            for (int tokenNdx = 0; tokenNdx < numTokens; ++tokenNdx) {
                final AppWindowToken wtoken = tokens.get(tokenNdx);
                AppWindowAnimator appAnimator = wtoken.mAppAnimator;
                final boolean allDrawn = wtoken.allDrawn;
                if (allDrawn != appAnimator.allDrawn) {
@@ -497,6 +501,7 @@ public class WindowAnimator {
                }
            }
        }
    }

    private void performAnimationsLocked(final int displayId) {
        updateWindowsLocked(displayId);
+247 −167

File changed.

Preview size limit exceeded, changes collapsed.