BBQSurface: Give client a chance to observe transform hint earlier
The client may be observing the transform hint through the Surface.cpp
codepath however Surface#mTransformHint will only be updated on
queueBuffer. However imagine a scenario like this:
1. transform hint changes on server
2. queue buffer
2. repeat queue buffer
3. callback for queue buffer 1 and 2, updates transform hint on
client
4. queue buffer 4
5. Client now observes transform hint
6. Queue buffer 5(!) will finally contain the transform hint.
With this change we give the client a chance to observe the tranform
hint in this scenario before queue buffer 4. In the case of the
ScreenDecorOverlay's which rarely redraw, this seems to fix some
persistent pre-rotation issues.
Bug: 184842607
Test: Existing tests pass.
Change-Id: I34524ee40c6076f497bb0c60af901e9c93798a48
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 2fc9d47..83aaf36 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -1288,7 +1288,7 @@
mUserHeight ? mUserHeight : mDefaultHeight);
return NO_ERROR;
case NATIVE_WINDOW_TRANSFORM_HINT:
- *value = static_cast<int>(mTransformHint);
+ *value = static_cast<int>(getTransformHint());
return NO_ERROR;
case NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND: {
status_t err = NO_ERROR;
@@ -1822,7 +1822,7 @@
return getExtraBufferCount(extraBuffers);
}
-bool Surface::transformToDisplayInverse() {
+bool Surface::transformToDisplayInverse() const {
return (mTransform & NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY) ==
NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY;
}