Home | History | Annotate | Download | only in text
      1 /*
      2  * Copyright 2015 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "GrTextBlobCache.h"
      9 
     10 DECLARE_SKMESSAGEBUS_MESSAGE(GrTextBlobCache::PurgeBlobMessage)
     11 
     12 GrTextBlobCache::~GrTextBlobCache() {
     13     SkDEBUGCODE(this->freeAll();)
     14 }
     15 
     16 void GrTextBlobCache::freeAll() {
     17     fBlobIDCache.foreach([this](uint32_t, BlobIDCacheEntry* entry) {
     18         for (const auto& blob : entry->fBlobs) {
     19             fBlobList.remove(blob.get());
     20         }
     21     });
     22 
     23     fBlobIDCache.reset();
     24 
     25     // There should be no allocations in the memory pool at this point
     26     SkASSERT(fPool.isEmpty());
     27     SkASSERT(fBlobList.isEmpty());
     28 }
     29 
     30 void GrTextBlobCache::PostPurgeBlobMessage(uint32_t id) {
     31     SkASSERT(id != SK_InvalidGenID);
     32     SkMessageBus<PurgeBlobMessage>::Post(PurgeBlobMessage({id}));
     33 }
     34