diff options
author | Craig Mautner <cmautner@google.com> | 2012-09-04 12:32:11 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-04 12:32:11 -0700 |
commit | 34a75df63533914bbca95a82d2c89ca374b2645d (patch) | |
tree | e90aba05a2b2943fe2092689d29f469aba1fa38c | |
parent | ed48f9f8b253b3140607cb97d623093b3a90e897 (diff) | |
parent | ea3a09a5b9c8ae56b0c4975c7a7039a05d4c0b3c (diff) | |
download | frameworks_base-34a75df63533914bbca95a82d2c89ca374b2645d.zip frameworks_base-34a75df63533914bbca95a82d2c89ca374b2645d.tar.gz frameworks_base-34a75df63533914bbca95a82d2c89ca374b2645d.tar.bz2 |
Merge "Remove single pass actions from display loop." into jb-mr1-dev
-rw-r--r-- | services/java/com/android/server/wm/DimAnimator.java | 7 | ||||
-rw-r--r-- | services/java/com/android/server/wm/WindowAnimator.java | 53 |
2 files changed, 34 insertions, 26 deletions
diff --git a/services/java/com/android/server/wm/DimAnimator.java b/services/java/com/android/server/wm/DimAnimator.java index afcf339..87a2880 100644 --- a/services/java/com/android/server/wm/DimAnimator.java +++ b/services/java/com/android/server/wm/DimAnimator.java @@ -212,5 +212,12 @@ class DimAnimator { mDimHeight = dimHeight; mDimTarget = dimTarget; } + + Parameters(Parameters o) { + mDimWinAnimator = o.mDimWinAnimator; + mDimWidth = o.mDimWidth; + mDimHeight = o.mDimHeight; + mDimTarget = o.mDimTarget; + } } } diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java index 9eab92c..f0b514c 100644 --- a/services/java/com/android/server/wm/WindowAnimator.java +++ b/services/java/com/android/server/wm/WindowAnimator.java @@ -176,7 +176,7 @@ public class WindowAnimator { // Set the new DimAnimator params. DimAnimator.Parameters dimParams = layoutToAnim.mDimParams; if (dimParams == null) { - mDimParams = dimParams; + mDimParams = null; } else { final WindowStateAnimator newWinAnimator = dimParams.mDimWinAnimator; @@ -187,7 +187,7 @@ public class WindowAnimator { if (newWinAnimator.mSurfaceShown && (existingDimWinAnimator == null || !existingDimWinAnimator.mSurfaceShown || existingDimWinAnimator.mAnimLayer < newWinAnimator.mAnimLayer)) { - mDimParams = dimParams; + mDimParams = new DimAnimator.Parameters(dimParams); } } @@ -559,15 +559,6 @@ public class WindowAnimator { private void performAnimationsLocked(final WinAnimatorList winAnimatorList) { updateWindowsLocked(winAnimatorList); updateWallpaperLocked(winAnimatorList); - - for (int i = mPendingLayoutChanges.size() - 1; i >= 0; i--) { - if ((mPendingLayoutChanges.valueAt(i) - & WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER) != 0) { - mPendingActions |= WALLPAPER_ACTION_PENDING; - } - } - - testTokenMayBeDrawnLocked(); } // TODO(cmautner): Change the following comment when no longer locked on mWindowMap */ @@ -576,12 +567,7 @@ public class WindowAnimator { if (!mInitialized) { return; } - for (int i = mWinAnimatorLists.size() - 1; i >= 0; i--) { - animateLocked(mWinAnimatorLists.get(i)); - } - } - private void animateLocked(final WinAnimatorList winAnimatorList) { mPendingLayoutChanges.clear(); mCurrentTime = SystemClock.uptimeMillis(); mBulkUpdateParams = SET_ORIENTATION_CHANGE_COMPLETE; @@ -591,23 +577,29 @@ public class WindowAnimator { Slog.i(TAG, "!!! animate: entry time=" + mCurrentTime); } - // Update animations of all applications, including those - // associated with exiting/removed apps + if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i( + TAG, ">>> OPEN TRANSACTION animateLocked"); Surface.openTransaction(); - try { updateWindowsAppsAndRotationAnimationsLocked(); - performAnimationsLocked(winAnimatorList); - // THIRD LOOP: Update the surfaces of all windows. + for (int i = mWinAnimatorLists.size() - 1; i >= 0; i--) { + final WinAnimatorList winAnimatorList = mWinAnimatorLists.get(i); - if (mScreenRotationAnimation != null) { - mScreenRotationAnimation.updateSurfacesInTransaction(); + // Update animations of all applications, including those + // associated with exiting/removed apps + performAnimationsLocked(winAnimatorList); + + final int N = winAnimatorList.size(); + for (int j = 0; j < N; j++) { + winAnimatorList.get(j).prepareSurfaceLocked(true); + } } - final int N = winAnimatorList.size(); - for (int i = 0; i < N; i++) { - winAnimatorList.get(i).prepareSurfaceLocked(true); + testTokenMayBeDrawnLocked(); + + if (mScreenRotationAnimation != null) { + mScreenRotationAnimation.updateSurfacesInTransaction(); } if (mDimParams != null) { @@ -634,6 +626,15 @@ public class WindowAnimator { Log.wtf(TAG, "Unhandled exception in Window Manager", e); } finally { Surface.closeTransaction(); + if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i( + TAG, "<<< CLOSE TRANSACTION animateLocked"); + } + + for (int i = mPendingLayoutChanges.size() - 1; i >= 0; i--) { + if ((mPendingLayoutChanges.valueAt(i) + & WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER) != 0) { + mPendingActions |= WALLPAPER_ACTION_PENDING; + } } if (mBulkUpdateParams != 0 || mPendingLayoutChanges.size() > 0) { |