Switch the thread-safe proxy cache over to using an arena for its entries
Bug: 1108408
Change-Id: Ib0260f72be3ac04fc1cf82c857bf4e99ec4ea239
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317770
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp b/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
index c2fd7dd..0c305d2 100644
--- a/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
+++ b/src/gpu/GrThreadSafeUniquelyKeyedProxyViewCache.cpp
@@ -10,7 +10,7 @@
GrThreadSafeUniquelyKeyedProxyViewCache::GrThreadSafeUniquelyKeyedProxyViewCache() {}
GrThreadSafeUniquelyKeyedProxyViewCache::~GrThreadSafeUniquelyKeyedProxyViewCache() {
- fUniquelyKeyedProxyViews.foreach([](Entry* v) { delete v; });
+ fUniquelyKeyedProxyViews.foreach([this](Entry* v) { this->recycleEntry(v); });
}
#if GR_TEST_UTILS
@@ -30,7 +30,7 @@
void GrThreadSafeUniquelyKeyedProxyViewCache::dropAllRefs() {
SkAutoSpinlock lock{fSpinLock};
- fUniquelyKeyedProxyViews.foreach([](Entry* v) { delete v; });
+ fUniquelyKeyedProxyViews.foreach([this](Entry* v) { this->recycleEntry(v); });
fUniquelyKeyedProxyViews.reset();
}
@@ -58,8 +58,7 @@
const GrSurfaceProxyView& view) {
Entry* tmp = fUniquelyKeyedProxyViews.find(key);
if (!tmp) {
- // TODO: block allocate here?
- tmp = new Entry(key, view);
+ tmp = this->getEntry(key, view);
fUniquelyKeyedProxyViews.add(tmp);
}