summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceComposerClient.cpp
diff options
context:
space:
mode:
author chaviw <chaviw@google.com> 2018-02-06 16:46:39 -0800
committer chaviw <chaviw@google.com> 2018-02-13 16:30:10 -0800
commitca27f2500cff74ae1e08b3ae06f18e9b3414ffb7 (patch)
treee98990b6977ea6fa7ae3b5e5683da4922c492901 /libs/gui/SurfaceComposerClient.cpp
parente9e63913379f9cea3e090ebf398514f437e5d525 (diff)
Allow destroySurface to get called in transaction.
Previously, destroy was always initiated immediatley and could not be synchronized with a client transaction. This change allows destroySurface to be called in the same transaction as other client state updates. Test: Unit tests pass Test: Call from Java fixes bugs. Change-Id: I841359530538961a0187216cc455cc388c0ede77 Fixes: 72953020 Fixes: 71499373
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
-rw-r--r--libs/gui/SurfaceComposerClient.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index c40cad3e99..0722038c5b 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -472,6 +472,17 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setGeome
return *this;
}
+SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::destroySurface(
+ const sp<SurfaceControl>& sc) {
+ layer_state_t* s = getLayerStateLocked(sc);
+ if (!s) {
+ mStatus = BAD_INDEX;
+ return *this;
+ }
+ s->what |= layer_state_t::eDestroySurface;
+ return *this;
+}
+
// ---------------------------------------------------------------------------
DisplayState& SurfaceComposerClient::Transaction::getDisplayStateLocked(const sp<IBinder>& token) {