AI 143320: am: CL 143171 am: CL 142873 fix [1732012] Only show screen rotation animation when triggered by sensor
  Original author: mathias
  Merged from: //branches/cupcake/...
  Original author: android-build
  Merged from: //branches/donutburger/...

Automated import of CL 143320
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);