Lines Matching refs:blob

35     // creates an uncached blob
40 sk_sp<GrAtlasTextBlob> makeBlob(const SkTextBlob* blob) {
43 BlobGlyphCount(&glyphCount, &runCount, blob);
47 sk_sp<GrAtlasTextBlob> makeCachedBlob(const SkTextBlob* blob,
51 sk_sp<GrAtlasTextBlob> cacheBlob(this->makeBlob(blob));
54 blob->notifyAddedToCache();
63 void remove(GrAtlasTextBlob* blob) {
64 auto id = GrAtlasTextBlob::GetKey(*blob).fUniqueID;
68 fBlobList.remove(blob);
69 idEntry->removeBlob(blob);
75 void makeMRU(GrAtlasTextBlob* blob) {
76 if (fBlobList.head() == blob) {
80 fBlobList.remove(blob);
81 fBlobList.addToHead(blob);
87 static void BlobGlyphCount(int* glyphCount, int* runCount, const SkTextBlob* blob) {
88 SkTextBlobRunIterator itCounter(blob);
116 void addBlob(sk_sp<GrAtlasTextBlob> blob) {
117 SkASSERT(blob);
118 SkASSERT(GrAtlasTextBlob::GetKey(*blob).fUniqueID == fID);
119 SkASSERT(!this->find(GrAtlasTextBlob::GetKey(*blob)));
121 fBlobs.emplace_back(std::move(blob));
124 void removeBlob(GrAtlasTextBlob* blob) {
125 SkASSERT(blob);
126 SkASSERT(GrAtlasTextBlob::GetKey(*blob).fUniqueID == fID);
128 auto index = this->findBlobIndex(GrAtlasTextBlob::GetKey(*blob));
154 void add(sk_sp<GrAtlasTextBlob> blob) {
155 auto id = GrAtlasTextBlob::GetKey(*blob).fUniqueID;
162 GrAtlasTextBlob* rawBlobPtr = blob.get();
164 idEntry->addBlob(std::move(blob));
169 void checkPurge(GrAtlasTextBlob* blob = nullptr) {
170 // First, purge all stale blob IDs.
182 // remove all blob entries from the LRU list
183 for (const auto& blob : idEntry->fBlobs) {
184 fBlobList.remove(blob.get());
197 while (fPool.size() > fBudget && (lruBlob = iter.get()) && lruBlob != blob) {
198 // Backup the iterator before removing and unrefing the blob
204 // If we break out of the loop with lruBlob == blob, then we haven't purged enough
207 if (blob && lruBlob == blob) {