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

Commit 7b90258c authored by Michael Lentine's avatar Michael Lentine
Browse files

Fix inverse orientation when original is not applied first.

Change-Id: I6f1a11950c77c99800acbf08a672bc1b2310b0b5
parent 14409634
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -348,8 +348,17 @@ FloatRect Layer::computeCrop(const sp<const DisplayDevice>& hw) const {
        int winWidth = s.active.w;
        int winWidth = s.active.w;
        int winHeight = s.active.h;
        int winHeight = s.active.h;
        if (invTransform & NATIVE_WINDOW_TRANSFORM_ROT_90) {
        if (invTransform & NATIVE_WINDOW_TRANSFORM_ROT_90) {
            // If the activeCrop has been rotate the ends are rotated but not
            // the space itself so when transforming ends back we can't rely on
            // a modification of the axes of rotation. To account for this we
            // need to reorient the inverse rotation in terms of the current
            // axes of rotation.
            bool is_h_flipped = (invTransform & NATIVE_WINDOW_TRANSFORM_FLIP_H) != 0;
            bool is_v_flipped = (invTransform & NATIVE_WINDOW_TRANSFORM_FLIP_V) != 0;
            if (is_h_flipped == is_v_flipped) {
                invTransform ^= NATIVE_WINDOW_TRANSFORM_FLIP_V |
                invTransform ^= NATIVE_WINDOW_TRANSFORM_FLIP_V |
                        NATIVE_WINDOW_TRANSFORM_FLIP_H;
                        NATIVE_WINDOW_TRANSFORM_FLIP_H;
            }
            winWidth = s.active.h;
            winWidth = s.active.h;
            winHeight = s.active.w;
            winHeight = s.active.w;
        }
        }