Lines Matching refs:entry
77 while (GrResourceEntry* entry = fList.head()) {
81 fCache.remove(entry->fKey, entry);
84 this->internalDetach(entry);
86 delete entry;
110 void GrResourceCache::internalDetach(GrResourceEntry* entry,
112 fList.remove(entry);
117 fClientDetachedBytes += entry->resource()->sizeInBytes();
132 fEntryBytes -= entry->resource()->sizeInBytes();
136 void GrResourceCache::attachToHead(GrResourceEntry* entry,
138 fList.addToHead(entry);
143 fClientDetachedBytes -= entry->resource()->sizeInBytes();
148 fEntryBytes += entry->resource()->sizeInBytes();
161 // This functor just searches for an entry with only a single ref (from
166 bool operator()(const GrResourceEntry* entry) const {
167 return entry->resource()->unique();
174 GrResourceEntry* entry = NULL;
179 entry = fCache.find<GrTFindUnreffedFunctor>(key, functor);
181 entry = fCache.find(key);
184 if (NULL == entry) {
189 this->makeExclusive(entry);
192 this->internalDetach(entry);
193 this->attachToHead(entry);
196 return entry->fResource;
210 GrResourceEntry* entry = SkNEW_ARGS(GrResourceEntry, (key, resource));
211 resource->setCacheEntry(entry);
213 this->attachToHead(entry);
214 fCache.insert(key, entry);
217 this->makeExclusive(entry);
222 void GrResourceCache::makeExclusive(GrResourceEntry* entry) {
227 this->internalDetach(entry, kIgnore_BudgetBehavior);
228 fCache.remove(entry->key(), entry);
231 fExclusiveList.addToHead(entry);
235 void GrResourceCache::removeInvalidResource(GrResourceEntry* entry) {
243 size_t size = entry->resource()->sizeInBytes();
248 void GrResourceCache::makeNonExclusive(GrResourceEntry* entry) {
252 fExclusiveList.remove(entry);
255 if (entry->resource()->isValid()) {
259 attachToHead(entry, kIgnore_BudgetBehavior);
260 fCache.insert(entry->key(), entry);
262 this->removeInvalidResource(entry);
301 void GrResourceCache::deleteResource(GrResourceEntry* entry) {
302 GrAssert(1 == entry->fResource->getRefCnt());
305 fCache.remove(entry->key(), entry);
308 this->internalDetach(entry);
309 delete entry;
329 GrResourceEntry* entry = iter.init(fList, EntryList::Iter::kTail_IterStart);
331 while (NULL != entry) {
341 if (entry->fResource->unique()) {
343 this->deleteResource(entry);
345 entry = prev;
355 // entry out. Instead change the budget and purge.
388 const GrResourceEntry* entry = iter.init(const_cast<EntryList&>(list),
391 for ( ; NULL != entry; entry = iter.prev()) {
392 bytes += entry->resource()->sizeInBytes();
416 const GrResourceEntry* entry = iter.init(const_cast<EntryList&>(fExclusiveList),
419 for ( ; NULL != entry; entry = iter.next()) {
420 entry->validate();
424 entry = iter.init(const_cast<EntryList&>(fList), EntryList::Iter::kHead_IterStart);
427 for ( ; NULL != entry; entry = iter.next()) {
428 entry->validate();
429 GrAssert(fCache.find(entry->key()));
453 GrResourceEntry* entry = iter.init(fList, EntryList::Iter::kTail_IterStart);
455 for ( ; NULL != entry; entry = iter.prev()) {
456 if (entry->fResource->getRefCnt() > 1) {
466 SkDebugf("\t\tDetached Entry Count: current %d high %d\n",