summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2016-04-13 01:40:35 +0000
committer Jorim Jaggi <jjaggi@google.com> 2016-04-13 01:43:21 +0000
commit092123cf5abe88c82deb89bb0188e1cc8d8338be (patch)
tree1e98ef22bba5def39716a8b35716b19c04686f8d
parentc6a607aa7ab96f6b1bac487cffd1899e1f1cdcf5 (diff)
Revert "Death to synchronous transactions (1/2)"
This reverts commit c6a607aa7ab96f6b1bac487cffd1899e1f1cdcf5. It causes issues when resizing: default buffer size on the consumer side only gets set when the transaction actually executes. But because consumer is not blocked on SF over WM anymore, it gets the default buffer size before the surface is resized, and thus uses wrong bounds for the buffer to be drawn, and never submits another one. This needs a more involved fix. Bug: 28122036 Bug: 28128613 Change-Id: I0e738f99e43fc9ea25426e9e6e607e01413d3bb7
-rw-r--r--libs/gui/SurfaceComposerClient.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index f031296cec..418892a1c3 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -291,6 +291,9 @@ status_t Composer::setSize(const sp<SurfaceComposerClient>& client,
s->w = w;
s->h = h;
+ // Resizing a surface makes the transaction synchronous.
+ mForceSynchronous = true;
+
return NO_ERROR;
}
@@ -451,6 +454,7 @@ void Composer::setDisplayProjection(const sp<IBinder>& token,
s.viewport = layerStackRect;
s.frame = displayRect;
s.what |= DisplayState::eDisplayProjectionChanged;
+ mForceSynchronous = true; // TODO: do we actually still need this?
}
void Composer::setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height) {