Send TextBlobCache purge messages only to owning cache.

Bug: 703297
Change-Id: I95cdaa5bdebadd5ce88ae3ee468c59baa08353c6
Reviewed-on: https://skia-review.googlesource.com/85046
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
diff --git a/src/gpu/text/GrTextBlobCache.cpp b/src/gpu/text/GrTextBlobCache.cpp
index f90ed99..64941ef 100644
--- a/src/gpu/text/GrTextBlobCache.cpp
+++ b/src/gpu/text/GrTextBlobCache.cpp
@@ -27,9 +27,9 @@
     SkASSERT(fBlobList.isEmpty());
 }
 
-void GrTextBlobCache::PostPurgeBlobMessage(uint32_t id) {
-    SkASSERT(id != SK_InvalidGenID);
-    SkMessageBus<PurgeBlobMessage>::Post(PurgeBlobMessage({id}));
+void GrTextBlobCache::PostPurgeBlobMessage(uint32_t blobID, uint32_t cacheID) {
+    SkASSERT(blobID != SK_InvalidGenID);
+    SkMessageBus<PurgeBlobMessage>::Post(PurgeBlobMessage({blobID}), cacheID);
 }
 
 void GrTextBlobCache::purgeStaleBlobs() {
diff --git a/src/gpu/text/GrTextBlobCache.h b/src/gpu/text/GrTextBlobCache.h
index dc7e4c5..ac15124 100644
--- a/src/gpu/text/GrTextBlobCache.h
+++ b/src/gpu/text/GrTextBlobCache.h
@@ -23,11 +23,13 @@
      */
     typedef void (*PFOverBudgetCB)(void* data);
 
-    GrTextBlobCache(PFOverBudgetCB cb, void* data)
+    GrTextBlobCache(PFOverBudgetCB cb, void* data, uint32_t uniqueID)
         : fPool(0u, kMinGrowthSize)
         , fCallback(cb)
         , fData(data)
-        , fBudget(kDefaultBudget) {
+        , fBudget(kDefaultBudget)
+        , fUniqueID(uniqueID)
+        , fPurgeBlobInbox(uniqueID) {
         SkASSERT(cb && data);
     }
     ~GrTextBlobCache();
@@ -51,7 +53,7 @@
         sk_sp<GrAtlasTextBlob> cacheBlob(this->makeBlob(blob));
         cacheBlob->setupKey(key, blurRec, paint);
         this->add(cacheBlob);
-        blob->notifyAddedToCache();
+        blob->notifyAddedToCache(fUniqueID);
         return cacheBlob;
     }
 
@@ -100,7 +102,7 @@
         uint32_t fID;
     };
 
-    static void PostPurgeBlobMessage(uint32_t);
+    static void PostPurgeBlobMessage(uint32_t blobID, uint32_t cacheID);
 
     void purgeStaleBlobs();
 
@@ -178,6 +180,7 @@
     PFOverBudgetCB fCallback;
     void* fData;
     size_t fBudget;
+    uint32_t fUniqueID;      // unique id to use for messaging
     SkMessageBus<PurgeBlobMessage>::Inbox fPurgeBlobInbox;
 };