From beba6f0a81de3145552713c2aee75c34fa0a8cdb Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Wed, 10 Feb 2021 21:06:27 -0800 Subject: SurfaceFlinger: Add ClientCache dumps Can be useful in debugging buffer leaks. Bug: 176691195 Test: Existing tests pass Change-Id: I8b318f272a7da3dde76d9153b21ced94127f0d8b --- services/surfaceflinger/ClientCache.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'services/surfaceflinger/ClientCache.cpp') diff --git a/services/surfaceflinger/ClientCache.cpp b/services/surfaceflinger/ClientCache.cpp index a5be01c75c..2ae49fa6bb 100644 --- a/services/surfaceflinger/ClientCache.cpp +++ b/services/surfaceflinger/ClientCache.cpp @@ -25,6 +25,8 @@ namespace android { +using base::StringAppendF; + ANDROID_SINGLETON_STATIC_INSTANCE(ClientCache); ClientCache::ClientCache() : mDeathRecipient(new CacheDeathRecipient) {} @@ -203,4 +205,18 @@ void ClientCache::CacheDeathRecipient::binderDied(const wp& who) { ClientCache::getInstance().removeProcess(who); } +void ClientCache::dump(std::string& result) { + std::lock_guard lock(mMutex); + for (auto i : mBuffers) { + const sp& cacheOwner = i.second.first; + StringAppendF(&result," Cache owner: %p\n", cacheOwner.get()); + auto &buffers = i.second.second; + for (auto& [id, clientCacheBuffer] : buffers) { + StringAppendF(&result, "\t ID: %d, Width/Height: %d,%d\n", (int)id, + (int)clientCacheBuffer.buffer->getWidth(), + (int)clientCacheBuffer.buffer->getHeight()); + } + } +} + }; // namespace android -- cgit v1.2.3-59-g8ed1b