From 1ad69541a48e301c1582137e6f9f56a451f4b3c5 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Thu, 23 May 2019 16:27:45 +0800 Subject: [PATCH] Handle NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY flag in ASurfaceTransaction BufferStateLayer ignores NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY flag if its set as part of the transform. Fix this by calling Transaction::setTransformToDisplayInverse when calling ASurfaceTransaction_setGeometry. Bug: 133330435 Test: Test landscape orientation in test app Test: go/wm-smoke Change-Id: Id499448d822425e5b7be4efed7f448c4e4378b87 --- native/android/surface_control.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp index 7ee2f0a1db182..8fe4fecceeb5d 100644 --- a/native/android/surface_control.cpp +++ b/native/android/surface_control.cpp @@ -384,6 +384,9 @@ void ASurfaceTransaction_setGeometry(ASurfaceTransaction* aSurfaceTransaction, transaction->setCrop(surfaceControl, static_cast(source)); transaction->setFrame(surfaceControl, static_cast(destination)); transaction->setTransform(surfaceControl, transform); + bool transformToInverseDisplay = (NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY & transform) == + NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; + transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay); } void ASurfaceTransaction_setBufferTransparency(ASurfaceTransaction* aSurfaceTransaction,