Lines Matching refs:blob
45 sk_sp<TextBlob> blob = this->findOrCreateBlob(viewMatrix, glyphRunList, paint, in drawGlyphRunList() local
48 blob->draw(canvas, glyphRunList.origin(), paint, atlasDelegate); in drawGlyphRunList()
60 sk_sp<TextBlob> blob; in findOrCreateBlob() local
62 blob = this->find(key); in findOrCreateBlob()
65 if (blob == nullptr || !blob->canReuse(paint, positionMatrix)) { in findOrCreateBlob()
66 if (blob != nullptr) { in findOrCreateBlob()
68 this->remove(blob.get()); in findOrCreateBlob()
71 blob = TextBlob::Make( in findOrCreateBlob()
76 blob->addKey(key); in findOrCreateBlob()
79 blob = this->addOrReturnExisting(glyphRunList, blob); in findOrCreateBlob()
83 return blob; in findOrCreateBlob()
93 const GlyphRunList& glyphRunList, sk_sp<TextBlob> blob) { in addOrReturnExisting() argument
95 blob = this->internalAdd(std::move(blob)); in addOrReturnExisting()
97 return blob; in addOrReturnExisting()
107 sk_sp<TextBlob> blob = idEntry->find(key); in find() local
108 TextBlob* blobPtr = blob.get(); in find()
113 return blob; in find()
116 void TextBlobRedrawCoordinator::remove(TextBlob* blob) { in remove() argument
118 this->internalRemove(blob); in remove()
121 void TextBlobRedrawCoordinator::internalRemove(TextBlob* blob) { in internalRemove() argument
122 auto id = blob->key().fUniqueID; in internalRemove()
126 sk_sp<TextBlob> stillExists = idEntry->find(blob->key()); in internalRemove()
127 if (blob == stillExists.get()) { in internalRemove()
128 fCurrentSize -= blob->size(); in internalRemove()
129 fBlobList.remove(blob); in internalRemove()
130 idEntry->removeBlob(blob); in internalRemove()
162 for (const auto& blob : idEntry->fBlobs) { in internalPurgeStaleBlobs() local
163 fCurrentSize -= blob->size(); in internalPurgeStaleBlobs()
164 fBlobList.remove(blob.get()); in internalPurgeStaleBlobs()
182 void TextBlobRedrawCoordinator::internalCheckPurge(TextBlob* blob) { in internalCheckPurge() argument
191 while (fCurrentSize > fSizeBudget && (lruBlob = iter.get()) && lruBlob != blob) { in internalCheckPurge()
206 sk_sp<TextBlob> TextBlobRedrawCoordinator::internalAdd(sk_sp<TextBlob> blob) { in internalAdd() argument
207 auto id = blob->key().fUniqueID; in internalAdd()
213 if (sk_sp<TextBlob> alreadyIn = idEntry->find(blob->key()); alreadyIn) { in internalAdd()
214 blob = std::move(alreadyIn); in internalAdd()
216 fBlobList.addToHead(blob.get()); in internalAdd()
217 fCurrentSize += blob->size(); in internalAdd()
218 idEntry->addBlob(blob); in internalAdd()
221 this->internalCheckPurge(blob.get()); in internalAdd()
222 return blob; in internalAdd()
234 void TextBlobRedrawCoordinator::BlobIDCacheEntry::addBlob(sk_sp<TextBlob> blob) { in addBlob() argument
235 SkASSERT(blob); in addBlob()
236 SkASSERT(blob->key().fUniqueID == fID); in addBlob()
237 SkASSERT(!this->find(blob->key())); in addBlob()
239 fBlobs.emplace_back(std::move(blob)); in addBlob()
242 void TextBlobRedrawCoordinator::BlobIDCacheEntry::removeBlob(TextBlob* blob) { in removeBlob() argument
243 SkASSERT(blob); in removeBlob()
244 SkASSERT(blob->key().fUniqueID == fID); in removeBlob()
246 auto index = this->findBlobIndex(blob->key()); in removeBlob()