diff options
| author | 2018-02-06 16:46:39 -0800 | |
|---|---|---|
| committer | 2018-02-13 16:30:10 -0800 | |
| commit | ca27f2500cff74ae1e08b3ae06f18e9b3414ffb7 (patch) | |
| tree | e98990b6977ea6fa7ae3b5e5683da4922c492901 /libs/gui/SurfaceComposerClient.cpp | |
| parent | e9e63913379f9cea3e090ebf398514f437e5d525 (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.cpp | 11 | 
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) { |