diff options
| author | 2019-08-12 16:01:52 -0700 | |
|---|---|---|
| committer | 2019-08-12 16:01:52 -0700 | |
| commit | a0fb6c30cdbb64c387808d3c070ad5db2fe81c1b (patch) | |
| tree | 6e2bc2c1bfa41001ccc3dbb367995a2f6dcb978f /services/surfaceflinger/BufferStateLayer.cpp | |
| parent | 04b07cf876b6dc30344980f576ad258c69c71f3c (diff) | |
| parent | 2778a9fcf33c8a9afa0c161a936faab70f60d4fd (diff) | |
Merge "[SurfaceFlinger] Callback to renderengine when erasing BLAST buffers" into qt-r1-dev am: 9939d091ec
am: 2778a9fcf3
Change-Id: I150aa5c7d08e7f5037f7886d0380d157f45c4534
Diffstat (limited to 'services/surfaceflinger/BufferStateLayer.cpp')
| -rw-r--r-- | services/surfaceflinger/BufferStateLayer.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 2abc1a75a9..63a07c35ca 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -51,6 +51,16 @@ BufferStateLayer::BufferStateLayer(const LayerCreationArgs& args) mCurrentState.dataspace = ui::Dataspace::V0_SRGB; } +BufferStateLayer::~BufferStateLayer() { + if (mActiveBuffer != nullptr) { + // Ensure that mActiveBuffer is uncached from RenderEngine here, as + // RenderEngine may have been using the buffer as an external texture + // after the client uncached the buffer. + auto& engine(mFlinger->getRenderEngine()); + engine.unbindExternalTextureBuffer(mActiveBuffer->getId()); + } +} + // ----------------------------------------------------------------------- // Interface implementation for Layer // ----------------------------------------------------------------------- @@ -610,10 +620,6 @@ void BufferStateLayer::onFirstRef() { } } -void BufferStateLayer::bufferErased(const client_cache_t& clientCacheId) { - mFlinger->getRenderEngine().unbindExternalTextureBuffer(clientCacheId.id); -} - void BufferStateLayer::HwcSlotGenerator::bufferErased(const client_cache_t& clientCacheId) { std::lock_guard lock(mMutex); if (!clientCacheId.isValid()) { |