Check fullness and purge on every strike lookup

In the old code, the cache was checked and perged on every reattach
of a strike. That was left out of the multi-threaded code. Add the
check and purge back in to maintain cache size.

* Removed minimum cache size from setCacheSizeLimit.

Bug: skia:10046
Change-Id: I2438c83f04b6da8133c161a29604c3c3d7f58cd8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/277066
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
(cherry picked from commit 3b946c16180ca2df5b239d410829c046bb74ceb2)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297599
Auto-Submit: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
diff --git a/src/core/SkStrikeCache.cpp b/src/core/SkStrikeCache.cpp
index c783081..b5bc181 100644
--- a/src/core/SkStrikeCache.cpp
+++ b/src/core/SkStrikeCache.cpp
@@ -101,6 +101,7 @@
         auto scaler = typeface.createScalerContext(effects, &desc);
         strike = this->internalCreateStrike(desc, std::move(scaler));
     }
+    this->internalPurge();
     return strike;
 }
 
@@ -181,7 +182,9 @@
 
 SkExclusiveStrikePtr SkStrikeCache::findStrikeExclusive(const SkDescriptor& desc) {
     SkAutoSpinlock ac(fLock);
-    return SkExclusiveStrikePtr(this->internalFindStrikeOrNull(desc));
+    sk_sp<SkStrike> result = this->internalFindStrikeOrNull(desc);
+    this->internalPurge();
+    return SkExclusiveStrikePtr(result);
 }
 
 auto SkStrikeCache::internalFindStrikeOrNull(const SkDescriptor& desc) -> sk_sp<Strike> {
@@ -251,11 +254,6 @@
 }
 
 size_t SkStrikeCache::setCacheSizeLimit(size_t newLimit) {
-    static const size_t minLimit = 256 * 1024;
-    if (newLimit < minLimit) {
-        newLimit = minLimit;
-    }
-
     SkAutoSpinlock ac(fLock);
 
     size_t prevLimit = fCacheSizeLimit;