Change slot generation for BufferState
BufferState layers now do slot generation with buffer death considered
appropriately. When a buffer dies, the slot will be pushed onto a stack
of available slots to be reused at the next opportunity. This should
mimic BufferQueue slot behavior and prevent Composer Resources from
growing too large.
Test: build, boot, manual
Bug: 129351223
Change-Id: Icef9592593cacb0b5c6b12f6679fc2c4dabdcd19
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 611da89..a19be12 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -387,9 +387,9 @@
void SurfaceComposerClient::doUncacheBufferTransaction(uint64_t cacheId) {
sp<ISurfaceComposer> sf(ComposerService::getComposerService());
- cached_buffer_t uncacheBuffer;
+ client_cache_t uncacheBuffer;
uncacheBuffer.token = BufferCache::getInstance().getToken();
- uncacheBuffer.cacheId = cacheId;
+ uncacheBuffer.id = cacheId;
sf->setTransactionState({}, {}, 0, nullptr, {}, -1, uncacheBuffer, {});
}
@@ -422,7 +422,7 @@
}
s->what |= layer_state_t::eCachedBufferChanged;
s->cachedBuffer.token = BufferCache::getInstance().getToken();
- s->cachedBuffer.cacheId = cacheId;
+ s->cachedBuffer.id = cacheId;
// If we have more buffers than the size of the cache, we should stop caching so we don't
// evict other buffers in this transaction