diff options
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 5 | ||||
-rw-r--r-- | services/surfaceflinger/LayerBase.cpp | 1 | ||||
-rw-r--r-- | services/surfaceflinger/LayerBase.h | 1 |
3 files changed, 4 insertions, 3 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 64eaecc..19c7ddd 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -196,13 +196,12 @@ void Layer::setGeometry(hwc_layer_t* hwcl) * 1) buffer orientation/flip/mirror * 2) state transformation (window manager) * 3) layer orientation (screen orientation) - * mOrientation is already the composition of (2) and (3) + * mTransform is already the composition of (2) and (3) * (NOTE: the matrices are multiplied in reverse order) */ const Transform bufferOrientation(mCurrentTransform); - const Transform layerOrientation(mOrientation); - const Transform tr(layerOrientation * bufferOrientation); + const Transform tr(mTransform * bufferOrientation); // this gives us only the "orientation" component of the transform const uint32_t finalTransform = tr.getOrientation(); diff --git a/services/surfaceflinger/LayerBase.cpp b/services/surfaceflinger/LayerBase.cpp index 7bf73d9..4cc245a 100644 --- a/services/surfaceflinger/LayerBase.cpp +++ b/services/surfaceflinger/LayerBase.cpp @@ -257,6 +257,7 @@ void LayerBase::validateVisibility(const Transform& planeTransform) // cache a few things... mOrientation = tr.getOrientation(); + mTransform = tr; mTransformedBounds = tr.makeBounds(w, h); mLeft = tr.tx(); mTop = tr.ty(); diff --git a/services/surfaceflinger/LayerBase.h b/services/surfaceflinger/LayerBase.h index a3d3644..2cd3a94 100644 --- a/services/surfaceflinger/LayerBase.h +++ b/services/surfaceflinger/LayerBase.h @@ -247,6 +247,7 @@ private: protected: // cached during validateVisibility() int32_t mOrientation; + Transform mTransform; GLfloat mVertices[4][2]; Rect mTransformedBounds; int mLeft; |