summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2012-09-04 12:32:11 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-04 12:32:11 -0700
commit34a75df63533914bbca95a82d2c89ca374b2645d (patch)
treee90aba05a2b2943fe2092689d29f469aba1fa38c
parented48f9f8b253b3140607cb97d623093b3a90e897 (diff)
parentea3a09a5b9c8ae56b0c4975c7a7039a05d4c0b3c (diff)
downloadframeworks_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.java7
-rw-r--r--services/java/com/android/server/wm/WindowAnimator.java53
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) {