status_t getCacheId(const sp<GraphicBuffer>& buffer, uint64_t* cacheId) {
std::lock_guard<std::mutex> lock(mMutex);
auto itr = mBuffers.find(buffer->getId());
if (itr == mBuffers.end()) {
return BAD_VALUE;
}
itr->second = getCounter();
*cacheId = buffer->getId();
return NO_ERROR;
}
在 mBuffers
中查找是否有缓存,如果没有则返回 BAD_VALUE
,如果存在则返回 cacheId
,它是 GraphicBuffer 的 ID。
BufferCache::getCounter() 函数缓存的使用次序,用于 LRU 清除缓存。