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

Commit 7e57c944 authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Remove AppTokenIterator from DisplayContent."

parents 16028e9d f81b9087
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.