libgui: Fix surface damage on rotated buffers
Flips the width and height when the buffer comes in with a 90 degree rotation so that performing the Y-flip from GL works correctly. Bug: 20761426 Change-Id: I41c9edc8549c6cbdb534277b996ff20c59034582
This commit is contained in:
parent
20828e633d
commit
0e65e6c283
@ -335,10 +335,14 @@ int Surface::queueBuffer(android_native_buffer_t* buffer, int fenceFd) {
|
|||||||
// the origin being in the bottom-left corner. Here we flip to the
|
// the origin being in the bottom-left corner. Here we flip to the
|
||||||
// convention that the rest of the system uses (top-left corner) by
|
// convention that the rest of the system uses (top-left corner) by
|
||||||
// subtracting all top/bottom coordinates from the buffer height.
|
// subtracting all top/bottom coordinates from the buffer height.
|
||||||
|
int height = buffer->height;
|
||||||
|
if ((mTransform ^ mStickyTransform) & NATIVE_WINDOW_TRANSFORM_ROT_90) {
|
||||||
|
height = buffer->width;
|
||||||
|
}
|
||||||
Region flippedRegion;
|
Region flippedRegion;
|
||||||
for (auto rect : mDirtyRegion) {
|
for (auto rect : mDirtyRegion) {
|
||||||
auto top = buffer->height - rect.bottom;
|
auto top = height - rect.bottom;
|
||||||
auto bottom = buffer->height - rect.top;
|
auto bottom = height - rect.top;
|
||||||
Rect flippedRect{rect.left, top, rect.right, bottom};
|
Rect flippedRect{rect.left, top, rect.right, bottom};
|
||||||
flippedRegion.orSelf(flippedRect);
|
flippedRegion.orSelf(flippedRect);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user