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
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 35aa7c7..04ac0f4 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -335,10 +335,14 @@
         // 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
         // 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;
         for (auto rect : mDirtyRegion) {
-            auto top = buffer->height - rect.bottom;
-            auto bottom = buffer->height - rect.top;
+            auto top = height - rect.bottom;
+            auto bottom = height - rect.top;
             Rect flippedRect{rect.left, top, rect.right, bottom};
             flippedRegion.orSelf(flippedRect);
         }