AI 143321: am: CL 143172 am: CL 142875 [1732012] for some reason these files didn't go through in the preview check-in.
  Original author: mathias
  Merged from: //branches/cupcake/...
  Original author: android-build
  Merged from: //branches/donutburger/...

Automated import of CL 143321
diff --git a/libs/surfaceflinger/LayerOrientationAnimRotate.cpp b/libs/surfaceflinger/LayerOrientationAnimRotate.cpp
index 12d5d80..89ffb19 100644
--- a/libs/surfaceflinger/LayerOrientationAnimRotate.cpp
+++ b/libs/surfaceflinger/LayerOrientationAnimRotate.cpp
@@ -65,6 +65,8 @@
     mLastAngle = 0;
     mLastScale = 0;
     mNeedsBlending = false;
+    const GraphicPlane& plane(graphicPlane(0));
+    mOriginalTargetOrientation = plane.getOrientation(); 
 }
 
 LayerOrientationAnimRotate::~LayerOrientationAnimRotate()
@@ -117,10 +119,6 @@
 {
     // Animation...
 
-    // FIXME: works only for portrait framebuffers
-    const Point size(getPhysicalSize());
-    const float TARGET_SCALE = size.x * (1.0f / size.y);
-    
     const nsecs_t now = systemTime();
     float angle, scale, alpha;
     
@@ -154,6 +152,9 @@
             scale = 1.0f;
         }
     } else {
+        // FIXME: works only for portrait framebuffers
+        const Point size(getPhysicalSize());
+        const float TARGET_SCALE = size.x * (1.0f / size.y);
         const float normalizedTime = float(now - mStartTime) / DURATION;
         if (normalizedTime <= 1.0f) {
             mLastNormalizedTime = normalizedTime;
@@ -212,8 +213,7 @@
     t.format = src.format;
     t.data = (GGLubyte*)(intptr_t(src.base) + src.offset);
 
-    const int targetOrientation = plane.getOrientation(); 
-    if (!targetOrientation) {
+    if (!mOriginalTargetOrientation) {
         f = -f;
     }
 
@@ -246,7 +246,7 @@
     drawWithOpenGL(clip, mTextureName, t);
     
     if (alpha > 0) {
-        const float sign = (!targetOrientation) ? 1.0f : -1.0f;
+        const float sign = (!mOriginalTargetOrientation) ? 1.0f : -1.0f;
         tr.set(f + sign*(M_PI * 0.5f * ROTATION_FACTOR), w*0.5f, h*0.5f);
         tr.scale(s, w*0.5f, h*0.5f);
         tr.transform(self.mVertices[0], 0, 0);
diff --git a/libs/surfaceflinger/LayerOrientationAnimRotate.h b/libs/surfaceflinger/LayerOrientationAnimRotate.h
index 5ca5780..5fbbd42 100644
--- a/libs/surfaceflinger/LayerOrientationAnimRotate.h
+++ b/libs/surfaceflinger/LayerOrientationAnimRotate.h
@@ -60,6 +60,7 @@
     nsecs_t mStartTime;
     nsecs_t mFinishTime;
     bool mOrientationCompleted;
+    int mOriginalTargetOrientation;
     mutable bool mFirstRedraw;
     mutable float mLastNormalizedTime;
     mutable float mLastAngle;