diff options
author | Craig Mautner <cmautner@google.com> | 2013-02-14 19:40:23 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-02-14 19:40:23 +0000 |
commit | 3beb8757ac9ba0829bf96e067ae32315f1d4bb3f (patch) | |
tree | 52e4353c13789a54ef2dd4f291234a46d8b9eedf | |
parent | b3d71a106e9f142ffe3ee901c63dac91640a74b9 (diff) | |
parent | 496bdbba30a113baaec61d4d0c011461cf5ee36d (diff) | |
download | frameworks_base-3beb8757ac9ba0829bf96e067ae32315f1d4bb3f.zip frameworks_base-3beb8757ac9ba0829bf96e067ae32315f1d4bb3f.tar.gz frameworks_base-3beb8757ac9ba0829bf96e067ae32315f1d4bb3f.tar.bz2 |
Merge "Remove AppWindowToken lists."
3 files changed, 31 insertions, 105 deletions
diff --git a/services/java/com/android/server/wm/DisplayContent.java b/services/java/com/android/server/wm/DisplayContent.java index 0b6c514..b48a004 100644 --- a/services/java/com/android/server/wm/DisplayContent.java +++ b/services/java/com/android/server/wm/DisplayContent.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import android.os.Debug; -import android.util.Slog; import android.util.SparseArray; import android.view.Display; import android.view.DisplayInfo; @@ -38,7 +36,7 @@ class DisplayContentList extends ArrayList<DisplayContent> { * WindowManagerService.mWindowMap. */ class DisplayContent { - private final static String TAG = "DisplayContent"; +// private final static String TAG = "DisplayContent"; /** Unique identifier of this stack. */ private final int mDisplayId; @@ -73,20 +71,6 @@ class DisplayContent { final boolean isDefaultDisplay; /** - * List controlling the ordering of windows in different applications which must - * be kept in sync with ActivityManager. - */ - final AppTokenList mAppTokens = new AppTokenList(); - - /** - * AppWindowTokens in the Z order they were in at the start of an animation. Between - * animations this list is maintained in the exact order of mAppTokens. If tokens - * are added to mAppTokens during an animation an attempt is made to insert them at the same - * logical location in this list. Note that this list is always in sync with mWindows. - */ - AppTokenList mAnimatingAppTokens = new AppTokenList(); - - /** * Window tokens that are in the process of exiting, but still * on screen for animations. */ @@ -140,18 +124,6 @@ class DisplayContent { * @param wtoken The token to insert. */ void addAppToken(final int addPos, final AppWindowToken wtoken) { - mAppTokens.add(addPos, wtoken); - - if (addPos == 0 || addPos == mAnimatingAppTokens.size()) { - // It was inserted into the beginning or end of mAppTokens. Honor that. - mAnimatingAppTokens.add(addPos, wtoken); - } else { - // Find the item immediately above the mAppTokens insertion point and put the token - // immediately below that one in mAnimatingAppTokens. - final AppWindowToken aboveAnchor = mAppTokens.get(addPos + 1); - mAnimatingAppTokens.add(mAnimatingAppTokens.indexOf(aboveAnchor), wtoken); - } - TaskList task = mTaskIdToTaskList.get(wtoken.groupId); if (task == null) { task = new TaskList(wtoken, this); @@ -163,8 +135,6 @@ class DisplayContent { } void removeAppToken(final AppWindowToken wtoken) { - mAppTokens.remove(wtoken); - mAnimatingAppTokens.remove(wtoken); final int taskId = wtoken.groupId; final TaskList task = mTaskIdToTaskList.get(taskId); if (task != null) { @@ -177,14 +147,6 @@ class DisplayContent { } } - void refillAnimatingAppTokens() { - mAnimatingAppTokens.clear(); - AppTokenIterator iterator = new AppTokenIterator(); - while (iterator.hasNext()) { - mAnimatingAppTokens.add(iterator.next()); - } - } - void setAppTaskId(AppWindowToken wtoken, int newTaskId) { final int taskId = wtoken.groupId; TaskList task = mTaskIdToTaskList.get(taskId); diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index 546bf2f..92ad485 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -25,6 +25,7 @@ import android.view.Surface; 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; @@ -174,10 +175,9 @@ public class WindowAnimator { private void updateAppWindowsLocked(int displayId) { int i; final DisplayContent displayContent = mService.getDisplayContentLocked(displayId); - final AppTokenList appTokens = displayContent.mAnimatingAppTokens; - final int NAT = appTokens.size(); - for (i=0; i<NAT; i++) { - final AppWindowAnimator appAnimator = appTokens.get(i).mAppAnimator; + AppTokenIterator iterator = displayContent.new AppTokenIterator(); + while (iterator.hasNext()) { + final AppWindowAnimator appAnimator = iterator.next().mAppAnimator; final boolean wasAnimating = appAnimator.animation != null && appAnimator.animation != AppWindowAnimator.sDummyAnimation; if (appAnimator.stepAnimationLocked(mCurrentTime)) { @@ -458,11 +458,10 @@ 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. - final AppTokenList appTokens = - mService.getDisplayContentLocked(displayId).mAnimatingAppTokens; - final int NT = appTokens.size(); - for (int i=0; i<NT; i++) { - AppWindowToken wtoken = appTokens.get(i); + AppTokenIterator iterator = mService.getDisplayContentLocked(displayId).new + AppTokenIterator(); + while (iterator.hasNext()) { + AppWindowToken wtoken = iterator.next(); AppWindowAnimator appAnimator = wtoken.mAppAnimator; final boolean allDrawn = wtoken.allDrawn; if (allDrawn != appAnimator.allDrawn) { diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 397b363..7d2574d 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -888,7 +888,6 @@ public class WindowManagerService extends IWindowManager.Stub final WindowList windows = win.getWindowList(); final int N = windows.size(); final WindowState attached = win.mAttachedWindow; - int i; WindowList tokenWindowList = getTokenWindowsOnDisplay(token, displayContent); if (attached == null) { int tokenWindowsPos = 0; @@ -938,13 +937,12 @@ public class WindowManagerService extends IWindowManager.Stub + client.asBinder() + " (token=" + token + ")"); // Figure out where the window should go, based on the // order of applications. - AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens; - final int NA = animatingAppTokens.size(); WindowState pos = null; - for (i=NA-1; i>=0; i--) { - AppWindowToken t = animatingAppTokens.get(i); + AppTokenIterator iterator = + displayContent.new AppTokenIterator(true /*reverse*/); + while (iterator.hasNext()) { + AppWindowToken t = iterator.next(); if (t == token) { - i--; break; } @@ -977,15 +975,14 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Continue looking down until we find the first // token that has windows on this display. - while (i >= 0) { - AppWindowToken t = animatingAppTokens.get(i); + while (iterator.hasNext()) { + AppWindowToken t = iterator.next(); tokenWindowList = getTokenWindowsOnDisplay(t, displayContent); final int NW = tokenWindowList.size(); if (NW > 0) { pos = tokenWindowList.get(NW-1); break; } - i--; } if (pos != null) { // Move in front of any windows attached to this @@ -1004,7 +1001,8 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Just search for the start of this layer. final int myLayer = win.mBaseLayer; - for (i=0; i<N; i++) { + int i; + for (i = 0; i < N; i++) { WindowState w = windows.get(i); if (w.mBaseLayer > myLayer) { break; @@ -1022,7 +1020,8 @@ public class WindowManagerService extends IWindowManager.Stub } else { // Figure out where window should go, based on layer. final int myLayer = win.mBaseLayer; - for (i=N-1; i>=0; i--) { + int i; + for (i = N - 1; i >= 0; i--) { if (windows.get(i).mBaseLayer <= myLayer) { break; } @@ -1047,7 +1046,8 @@ public class WindowManagerService extends IWindowManager.Stub final int sublayer = win.mSubLayer; int largestSublayer = Integer.MIN_VALUE; WindowState windowWithLargestSublayer = null; - for (i=0; i<NA; i++) { + int i; + for (i = 0; i < NA; i++) { WindowState w = tokenWindowList.get(i); final int wSublayer = w.mSubLayer; if (wSublayer >= largestSublayer) { @@ -4369,18 +4369,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - void dumpAnimatingAppTokensLocked() { - DisplayContentsIterator iterator = new DisplayContentsIterator(); - while (iterator.hasNext()) { - DisplayContent displayContent = iterator.next(); - Slog.v(TAG, " Display " + displayContent.getDisplayId()); - AppTokenList appTokens = displayContent.mAnimatingAppTokens; - for (int i=appTokens.size()-1; i>=0; i--) { - Slog.v(TAG, " #" + i + ": " + appTokens.get(i).token); - } - } - } - void dumpWindowsLocked() { int i = 0; final AllWindowsIterator iterator = new AllWindowsIterator(REVERSE_ITERATOR); @@ -4550,7 +4538,6 @@ public class WindowManagerService extends IWindowManager.Stub } displayContent.mTaskLists.add(taskList); - displayContent.refillAnimatingAppTokens(); moveTaskWindowsLocked(taskId); } } finally { @@ -4579,7 +4566,6 @@ public class WindowManagerService extends IWindowManager.Stub } displayContent.mTaskLists.add(0, taskList); - displayContent.refillAnimatingAppTokens(); moveTaskWindowsLocked(taskId); } } finally { @@ -6829,7 +6815,6 @@ public class WindowManagerService extends IWindowManager.Stub if (mAppTransition.isTransitionSet()) { if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** APP TRANSITION TIMEOUT"); mAppTransition.setTimeout(); - getDefaultDisplayContentLocked().refillAnimatingAppTokens(); performLayoutAndPlaceSurfacesLocked(); } } @@ -7338,10 +7323,9 @@ public class WindowManagerService extends IWindowManager.Stub } // And add in the still active app tokens in Z order. - AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens; - NT = animatingAppTokens.size(); - for (int j=0; j<NT; j++) { - i = reAddAppWindowsLocked(displayContent, i, animatingAppTokens.get(j)); + AppTokenIterator iterator = displayContent.new AppTokenIterator(); + while (iterator.hasNext()) { + i = reAddAppWindowsLocked(displayContent, i, iterator.next()); } i -= lastBelow; @@ -7361,7 +7345,7 @@ public class WindowManagerService extends IWindowManager.Stub } } Slog.w(TAG, "Current app token list:"); - dumpAnimatingAppTokensLocked(); + dumpAppTokensLocked(); Slog.w(TAG, "Final window list:"); dumpWindowsLocked(); } @@ -8008,11 +7992,10 @@ public class WindowManagerService extends IWindowManager.Stub mAppTransition.setIdle(); // Restore window app tokens to the ActivityManager views final DisplayContent displayContent = getDefaultDisplayContentLocked(); - final AppTokenList animatingAppTokens = displayContent.mAnimatingAppTokens; - for (int i = animatingAppTokens.size() - 1; i >= 0; i--) { - animatingAppTokens.get(i).sendingToBottom = false; + AppTokenIterator iterator = displayContent.new AppTokenIterator(); + while (iterator.hasNext()) { + iterator.next().sendingToBottom = false; } - displayContent.refillAnimatingAppTokens(); rebuildAppWindowListLocked(); changes |= PhoneWindowManager.FINISH_LAYOUT_REDO_LAYOUT; @@ -8169,10 +8152,9 @@ public class WindowManagerService extends IWindowManager.Stub private void updateAllDrawnLocked(DisplayContent displayContent) { // See if any windows have been drawn, so they (and others // associated with them) can now be shown. - final AppTokenList appTokens = displayContent.mAnimatingAppTokens; - final int NT = appTokens.size(); - for (int i=0; i<NT; i++) { - AppWindowToken wtoken = appTokens.get(i); + AppTokenIterator iterator = displayContent.new AppTokenIterator(); + while (iterator.hasNext()) { + AppWindowToken wtoken = iterator.next(); if (!wtoken.allDrawn) { int numInteresting = wtoken.numInterestingWindows; if (numInteresting > 0 && wtoken.numDrawnWindows >= numInteresting) { @@ -9533,23 +9515,6 @@ public class WindowManagerService extends IWindowManager.Stub } } } - final AppTokenList animatingAppTokens = - getDefaultDisplayContentLocked().mAnimatingAppTokens; - if (mAppTransition.isRunning() && animatingAppTokens.size() > 0) { - pw.println(); - pw.println(" Application tokens during animation:"); - for (int i=animatingAppTokens.size()-1; i>=0; i--) { - WindowToken token = animatingAppTokens.get(i); - pw.print(" App moving to bottom #"); pw.print(i); - pw.print(' '); pw.print(token); - if (dumpAll) { - pw.println(':'); - token.dump(pw, " "); - } else { - pw.println(); - } - } - } if (mOpeningApps.size() > 0 || mClosingApps.size() > 0) { pw.println(); if (mOpeningApps.size() > 0) { |