Merge "Change DimAnimator to reflect rotations." into jb-dev
diff --git a/services/java/com/android/server/wm/DimAnimator.java b/services/java/com/android/server/wm/DimAnimator.java
index f9f9d1a..e8f56c8 100644
--- a/services/java/com/android/server/wm/DimAnimator.java
+++ b/services/java/com/android/server/wm/DimAnimator.java
@@ -68,8 +68,10 @@
      * {@link #updateSurface} after all windows are examined.
      */
     void updateParameters(final Resources res, final Parameters params, final long currentTime) {
-        final int dw = params.mDimWidth;
-        final int dh = params.mDimHeight;
+        // Multiply by 1.5 so that rotating a frozen surface that includes this does not expose a
+        // corner.
+        final int dw = (int) (params.mDimWidth * 1.5);
+        final int dh = (int) (params.mDimHeight * 1.5);
         final WindowStateAnimator winAnimator = params.mDimWinAnimator;
         final float target = params.mDimTarget;
         if (!mDimShown) {
@@ -79,7 +81,8 @@
             try {
                 mLastDimWidth = dw;
                 mLastDimHeight = dh;
-                mDimSurface.setPosition(0, 0);
+                // back off position so mDimXXX/4 is before and mDimXXX/4 is after
+                mDimSurface.setPosition(-1 * dw / 6, -1 * dh /6);
                 mDimSurface.setSize(dw, dh);
                 mDimSurface.show();
             } catch (RuntimeException e) {
@@ -89,6 +92,8 @@
             mLastDimWidth = dw;
             mLastDimHeight = dh;
             mDimSurface.setSize(dw, dh);
+            // back off position so mDimXXX/4 is before and mDimXXX/4 is after
+            mDimSurface.setPosition(-1 * dw / 6, -1 * dh /6);
         }
 
         mDimSurface.setLayer(winAnimator.mAnimLayer - WindowManagerService.LAYER_OFFSET_DIM);
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 2e38332..4f08d92 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -951,6 +951,10 @@
                 mSurface.setSize(width, height);
                 mAnimator.mPendingLayoutChanges |=
                         WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+                if ((w.mAttrs.flags & LayoutParams.FLAG_DIM_BEHIND) != 0) {
+                    mAnimator.startDimming(this, w.mExiting ? 0 : w.mAttrs.dimAmount,
+                            mService.mAppDisplayWidth, mService.mAppDisplayHeight);
+                }
             } catch (RuntimeException e) {
                 // If something goes wrong with the surface (such
                 // as running out of memory), don't take down the