Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d992db38 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

give the proper orientation to the h/w composer HAL

we were using the "orientation" value instead of the
real transform, which may contain arbitrary rotations for
instance, and in some case ended up with a final "orientation"
that looked valid, but wasn't.

this fixes a problem on devices with a h/w composer hal where
the rotation animation looked weird.

Change-Id: I4be8a2a1bde49c33456fcf5c8d87ab515c216763
parent 9509b9ce
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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();
+1 −0
Original line number Diff line number Diff line
@@ -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();
+1 −0
Original line number Diff line number Diff line
@@ -247,6 +247,7 @@ private:
protected:
                // cached during validateVisibility()
                int32_t         mOrientation;
                Transform       mTransform;
                GLfloat         mVertices[4][2];
                Rect            mTransformedBounds;
                int             mLeft;