diff --git a/include/ui/ISurfaceComposer.h b/include/ui/ISurfaceComposer.h
index f9eeb30..5c64b22 100644
--- a/include/ui/ISurfaceComposer.h
+++ b/include/ui/ISurfaceComposer.h
@@ -81,6 +81,11 @@
         eOrientation270         = 3,
         eOrientationSwapMask    = 0x01
     };
+    
+    // flags for setOrientation
+    enum {
+        eOrientationAnimationDisable = 0x00000001
+    };
 
     /* create connection with surface flinger, requires
      * ACCESS_SURFACE_FLINGER permission
@@ -100,7 +105,7 @@
     virtual status_t unfreezeDisplay(DisplayID dpy, uint32_t flags) = 0;
 
     /* Set display orientation. recquires ACCESS_SURFACE_FLINGER permission */
-    virtual int setOrientation(DisplayID dpy, int orientation) = 0;
+    virtual int setOrientation(DisplayID dpy, int orientation, uint32_t flags) = 0;
 
     /* signal that we're done booting.
      * recquires ACCESS_SURFACE_FLINGER permission
diff --git a/include/ui/SurfaceComposerClient.h b/include/ui/SurfaceComposerClient.h
index 5d9222d..76a3b55 100644
--- a/include/ui/SurfaceComposerClient.h
+++ b/include/ui/SurfaceComposerClient.h
@@ -97,7 +97,7 @@
     static status_t unfreezeDisplay(DisplayID dpy, uint32_t flags = 0);
 
     //! Set the orientation of the given display
-    static int setOrientation(DisplayID dpy, int orientation);
+    static int setOrientation(DisplayID dpy, int orientation, uint32_t flags);
 
     // Query the number of displays
     static ssize_t getNumberOfDisplays();
diff --git a/libs/surfaceflinger/OrientationAnimation.cpp b/libs/surfaceflinger/OrientationAnimation.cpp
index e59688e..70eec8d 100644
--- a/libs/surfaceflinger/OrientationAnimation.cpp
+++ b/libs/surfaceflinger/OrientationAnimation.cpp
@@ -44,10 +44,14 @@
 {
 }
 
-void OrientationAnimation::onOrientationChanged()
+void OrientationAnimation::onOrientationChanged(uint32_t type)
 {
-    if (mState == DONE)
-        mState = PREPARE;
+    if (mState == DONE) {
+        mType = type;
+        if (!(type & ISurfaceComposer::eOrientationAnimationDisable)) {
+            mState = PREPARE;
+        }
+    }
 }
 
 void OrientationAnimation::onAnimationFinished()
@@ -82,14 +86,7 @@
 
 bool OrientationAnimation::done()
 {
-    if (mFlinger->isFrozen()) {
-        // we are not allowed to draw, but pause a bit to make sure
-        // apps don't end up using the whole CPU, if they depend on
-        // surfaceflinger for synchronization.
-        usleep(8333); // 8.3ms ~ 120fps
-        return true;
-    }
-    return false;
+    return done_impl();
 }
 
 bool OrientationAnimation::prepare()
@@ -115,11 +112,13 @@
 
     LayerOrientationAnimBase* l;
     
-    l = new LayerOrientationAnim(
-            mFlinger.get(), 0, this, bitmap, bitmapIn);
-
-    //l = new LayerOrientationAnimRotate(
-    //        mFlinger.get(), 0, this, bitmap, bitmapIn);
+    if (mType & 0x80) {
+        l = new LayerOrientationAnimRotate(
+                mFlinger.get(), 0, this, bitmap, bitmapIn);
+    } else {
+        l = new LayerOrientationAnim(
+                mFlinger.get(), 0, this, bitmap, bitmapIn);
+    }
 
     l->initStates(w, h, 0);
     l->setLayer(INT_MAX-1);
diff --git a/libs/surfaceflinger/OrientationAnimation.h b/libs/surfaceflinger/OrientationAnimation.h
index b170dcb..cafa38d 100644
--- a/libs/surfaceflinger/OrientationAnimation.h
+++ b/libs/surfaceflinger/OrientationAnimation.h
@@ -36,11 +36,11 @@
                  OrientationAnimation(const sp<SurfaceFlinger>& flinger);
         virtual ~OrientationAnimation();
 
-   void onOrientationChanged();
+   void onOrientationChanged(uint32_t type);
    void onAnimationFinished();
    inline bool run() {
        if (LIKELY(mState == DONE))
-           return false;
+           return done_impl();
        return run_impl();
    }
 
@@ -54,7 +54,18 @@
     };
 
     bool run_impl();
-    bool done();
+    inline bool done_impl() {
+        if (mFlinger->isFrozen()) {
+            // we are not allowed to draw, but pause a bit to make sure
+            // apps don't end up using the whole CPU, if they depend on
+            // surfaceflinger for synchronization.
+            usleep(8333); // 8.3ms ~ 120fps
+            return true;
+        }
+        return false;
+    }
+    
+    bool done();    
     bool prepare();
     bool phase1();
     bool phase2();
@@ -64,6 +75,7 @@
     sp<MemoryDealer> mTemporaryDealer;
     LayerOrientationAnimBase* mLayerOrientationAnim;
     int mState;
+    uint32_t mType;
 };
 
 // ---------------------------------------------------------------------------
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp
index 8499b67..de64f55 100644
--- a/libs/surfaceflinger/SurfaceFlinger.cpp
+++ b/libs/surfaceflinger/SurfaceFlinger.cpp
@@ -655,6 +655,7 @@
 
             const int dpy = 0;
             const int orientation = mCurrentState.orientation;
+            const uint32_t type = mCurrentState.orientationType;
             GraphicPlane& plane(graphicPlane(dpy));
             plane.setOrientation(orientation);
 
@@ -673,8 +674,8 @@
 
             mVisibleRegionsDirty = true;
             mDirtyRegion.set(hw.bounds());
-
-            mOrientationAnimation->onOrientationChanged();
+            mFreezeDisplayTime = 0;
+            mOrientationAnimation->onOrientationChanged(type);
         }
 
         if (mCurrentState.freezeDisplay != mDrawingState.freezeDisplay) {
@@ -1201,7 +1202,8 @@
     return NO_ERROR;
 }
 
-int SurfaceFlinger::setOrientation(DisplayID dpy, int orientation)
+int SurfaceFlinger::setOrientation(DisplayID dpy, 
+        int orientation, uint32_t flags)
 {
     if (UNLIKELY(uint32_t(dpy) >= DISPLAY_COUNT))
         return BAD_VALUE;
@@ -1209,6 +1211,7 @@
     Mutex::Autolock _l(mStateLock);
     if (mCurrentState.orientation != orientation) {
         if (uint32_t(orientation)<=eOrientation270 || orientation==42) {
+            mCurrentState.orientationType = flags;
             mCurrentState.orientation = orientation;
             setTransactionFlags(eTransactionNeeded);
             mTransactionCV.wait(mStateLock);
diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h
index 3c10481..e023182 100644
--- a/libs/surfaceflinger/SurfaceFlinger.h
+++ b/libs/surfaceflinger/SurfaceFlinger.h
@@ -167,7 +167,7 @@
     virtual void                        closeGlobalTransaction();
     virtual status_t                    freezeDisplay(DisplayID dpy, uint32_t flags);
     virtual status_t                    unfreezeDisplay(DisplayID dpy, uint32_t flags);
-    virtual int                         setOrientation(DisplayID dpy, int orientation);
+    virtual int                         setOrientation(DisplayID dpy, int orientation, uint32_t flags);
     virtual void                        signal() const;
     virtual status_t requestGPU(const sp<IGPUCallback>& callback, 
             gpu_info_t* gpu);
@@ -244,6 +244,7 @@
         }
         LayerVector     layersSortedByZ;
         uint8_t         orientation;
+        uint8_t         orientationType;
         uint8_t         freezeDisplay;
     };
 
diff --git a/libs/ui/ISurfaceComposer.cpp b/libs/ui/ISurfaceComposer.cpp
index 0fea6f9..76597e1 100644
--- a/libs/ui/ISurfaceComposer.cpp
+++ b/libs/ui/ISurfaceComposer.cpp
@@ -96,12 +96,13 @@
         return reply.readInt32();
     }
 
-    virtual int setOrientation(DisplayID dpy, int orientation)
+    virtual int setOrientation(DisplayID dpy, int orientation, uint32_t flags)
     {
         Parcel data, reply;
         data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
         data.writeInt32(dpy);
         data.writeInt32(orientation);
+        data.writeInt32(flags);
         remote()->transact(BnSurfaceComposer::SET_ORIENTATION, data, &reply);
         return reply.readInt32();
     }
@@ -184,7 +185,8 @@
         case SET_ORIENTATION: {
             DisplayID dpy = data.readInt32();
             int orientation = data.readInt32();
-            reply->writeInt32( setOrientation(dpy, orientation) );
+            uint32_t flags = data.readInt32();
+            reply->writeInt32( setOrientation(dpy, orientation, flags) );
         } break;
         case FREEZE_DISPLAY: {
             DisplayID dpy = data.readInt32();
diff --git a/libs/ui/SurfaceComposerClient.cpp b/libs/ui/SurfaceComposerClient.cpp
index 9354a7a..fe803ff 100644
--- a/libs/ui/SurfaceComposerClient.cpp
+++ b/libs/ui/SurfaceComposerClient.cpp
@@ -813,10 +813,11 @@
     return sm->unfreezeDisplay(dpy, flags);
 }
 
-int SurfaceComposerClient::setOrientation(DisplayID dpy, int orientation)
+int SurfaceComposerClient::setOrientation(DisplayID dpy, 
+        int orientation, uint32_t flags)
 {
     const sp<ISurfaceComposer>& sm(_get_surface_manager());
-    return sm->setOrientation(dpy, orientation);
+    return sm->setOrientation(dpy, orientation, flags);
 }
 
 status_t SurfaceComposerClient::openTransaction()
