Automated import from //branches/cupcake/...@142870,142870
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 15e7eb2..5607d4b 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -59,6 +59,8 @@
     void pauseKeyDispatching(IBinder token);
     void resumeKeyDispatching(IBinder token);
     void setEventDispatching(boolean enabled);
+    void addWindowToken(IBinder token, int type);
+    void removeWindowToken(IBinder token);
     void addAppToken(int addPos, IApplicationToken token,
             int groupId, int requestedOrientation, boolean fullscreen);
     void setAppGroupId(IBinder token, int groupId);
@@ -81,8 +83,6 @@
     void moveAppToken(int index, IBinder token);
     void moveAppTokensToTop(in List<IBinder> tokens);
     void moveAppTokensToBottom(in List<IBinder> tokens);
-    void addWindowToken(IBinder token, int type);
-    void removeWindowToken(IBinder token);
 
     // these require DISABLE_KEYGUARD permission
     void disableKeyguard(IBinder token, String tag);
@@ -119,9 +119,9 @@
      * @param alwaysSendConfiguration Flag to force a new configuration to
      * be evaluated.  This can be used when there are other parameters in
      * configuration that are changing.
-     * {@link android.view.Surface}.
+     * @param animFlags Animation flags as per {@link android.view.Surface}.
      */
-    void setRotation(int rotation, boolean alwaysSendConfiguration);
+    void setRotation(int rotation, boolean alwaysSendConfiguration, int animFlags);
 
     /**
      * Retrieve the current screen orientation, constants as per
diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java
index ac321db..13606e7 100755
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/core/java/android/view/WindowOrientationListener.java
@@ -80,6 +80,7 @@
         }
         if (mEnabled == false) {
             if (localLOGV) Log.d(TAG, "WindowOrientationListener enabled");
+            mSensorRotation = -1;
             mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);
             mEnabled = true;
         }
@@ -95,11 +96,16 @@
         }
         if (mEnabled == true) {
             if (localLOGV) Log.d(TAG, "WindowOrientationListener disabled");
+            mSensorRotation = -1;
             mSensorManager.unregisterListener(mSensorEventListener);
             mEnabled = false;
         }
     }
 
+    public int getCurrentRotation() {
+        return mSensorRotation;
+    }
+    
     class SensorEventListenerImpl implements SensorEventListener {
         private static final int _DATA_X = 0;
         private static final int _DATA_Y = 1;
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 19ab21d8..48cbf99 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -2166,7 +2166,7 @@
             
             if (changed) {
                 changed = setRotationUncheckedLocked(
-                        WindowManagerPolicy.USE_LAST_ROTATION);
+                        WindowManagerPolicy.USE_LAST_ROTATION, 1);
                 if (changed) {
                     if (freezeThisOneIfNeeded != null) {
                         AppWindowToken wtoken = findAppWindowToken(
@@ -3258,7 +3258,7 @@
         mPolicy.enableScreenAfterBoot();
         
         // Make sure the last requested orientation has been applied.
-        setRotationUnchecked(WindowManagerPolicy.USE_LAST_ROTATION, false);
+        setRotationUnchecked(WindowManagerPolicy.USE_LAST_ROTATION, false, 0);
     }
     
     public void setInTouchMode(boolean mode) {
@@ -3268,23 +3268,24 @@
     }
 
     public void setRotation(int rotation, 
-            boolean alwaysSendConfiguration) {
+            boolean alwaysSendConfiguration, int animFlags) {
         if (!checkCallingPermission(android.Manifest.permission.SET_ORIENTATION,
-                "setOrientation()")) {
+                "setRotation()")) {
             return;
         }
 
-        setRotationUnchecked(rotation, alwaysSendConfiguration);
+        setRotationUnchecked(rotation, alwaysSendConfiguration, animFlags);
     }
     
-    public void setRotationUnchecked(int rotation, boolean alwaysSendConfiguration) {
+    public void setRotationUnchecked(int rotation,
+            boolean alwaysSendConfiguration, int animFlags) {
         if(DEBUG_ORIENTATION) Log.v(TAG,
                 "alwaysSendConfiguration set to "+alwaysSendConfiguration);
         
         long origId = Binder.clearCallingIdentity();
         boolean changed;
         synchronized(mWindowMap) {
-            changed = setRotationUncheckedLocked(rotation);
+            changed = setRotationUncheckedLocked(rotation, animFlags);
         }
         
         if (changed) {
@@ -3301,7 +3302,7 @@
         Binder.restoreCallingIdentity(origId);
     }
     
-    public boolean setRotationUncheckedLocked(int rotation) {
+    public boolean setRotationUncheckedLocked(int rotation, int animFlags) {
         boolean changed;
         if (rotation == WindowManagerPolicy.USE_LAST_ROTATION) {
             rotation = mRequestedRotation;
@@ -3326,6 +3327,7 @@
             mH.sendMessageDelayed(mH.obtainMessage(H.WINDOW_FREEZE_TIMEOUT),
                     2000);
             startFreezingDisplayLocked();
+            Log.i(TAG, "Setting rotation to " + rotation + ", animFlags=" + animFlags);
             mQueue.setOrientation(rotation);
             if (mDisplayEnabled) {
                 Surface.setOrientation(0, rotation);
@@ -6976,7 +6978,6 @@
         public static final int REMOVE_STARTING = 6;
         public static final int FINISHED_STARTING = 7;
         public static final int REPORT_APPLICATION_TOKEN_WINDOWS = 8;
-        public static final int UPDATE_ORIENTATION = 10;
         public static final int WINDOW_FREEZE_TIMEOUT = 11;
         public static final int HOLD_SCREEN_CHANGED = 12;
         public static final int APP_TRANSITION_TIMEOUT = 13;
@@ -7204,11 +7205,6 @@
                     }
                 } break;
                 
-                case UPDATE_ORIENTATION: {
-                    setRotationUnchecked(WindowManagerPolicy.USE_LAST_ROTATION, false);
-                    break;
-                }
-                
                 case WINDOW_FREEZE_TIMEOUT: {
                     synchronized (mWindowMap) {
                         Log.w(TAG, "Window freeze timeout expired.");