AI 143323: am: CL 143173 am: CL 142879 Fix issue #1732012 (Only show screen rotation animation when triggered by sensor) -- set the new surface flag as appropriate.
  Original author: hackbod
  Merged from: //branches/cupcake/...
  Original author: android-build
  Merged from: //branches/donutburger/...

Automated import of CL 143323
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 48cbf99..2e16157 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -319,6 +319,7 @@
     int mRotation = 0;
     int mRequestedRotation = 0;
     int mForcedAppOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+    int mLastRotationFlags;
     ArrayList<IRotationWatcher> mRotationWatchers
             = new ArrayList<IRotationWatcher>();
     
@@ -2166,7 +2167,8 @@
             
             if (changed) {
                 changed = setRotationUncheckedLocked(
-                        WindowManagerPolicy.USE_LAST_ROTATION, 1);
+                        WindowManagerPolicy.USE_LAST_ROTATION,
+                        mLastRotationFlags & (~Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE));
                 if (changed) {
                     if (freezeThisOneIfNeeded != null) {
                         AppWindowToken wtoken = findAppWindowToken(
@@ -3258,7 +3260,8 @@
         mPolicy.enableScreenAfterBoot();
         
         // Make sure the last requested orientation has been applied.
-        setRotationUnchecked(WindowManagerPolicy.USE_LAST_ROTATION, false, 0);
+        setRotationUnchecked(WindowManagerPolicy.USE_LAST_ROTATION, false,
+                mLastRotationFlags | Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE);
     }
     
     public void setInTouchMode(boolean mode) {
@@ -3308,6 +3311,7 @@
             rotation = mRequestedRotation;
         } else {
             mRequestedRotation = rotation;
+            mLastRotationFlags = animFlags;
         }
         if (DEBUG_ORIENTATION) Log.v(TAG, "Overwriting rotation value from " + rotation);
         rotation = mPolicy.rotationForOrientationLw(mForcedAppOrientation,
@@ -3330,7 +3334,7 @@
             Log.i(TAG, "Setting rotation to " + rotation + ", animFlags=" + animFlags);
             mQueue.setOrientation(rotation);
             if (mDisplayEnabled) {
-                Surface.setOrientation(0, rotation);
+                Surface.setOrientation(0, rotation, animFlags);
             }
             for (int i=mWindows.size()-1; i>=0; i--) {
                 WindowState w = (WindowState)mWindows.get(i);