Lines Matching refs:entry

76 void GrResourceCache::internalDetach(GrResourceEntry* entry,
78 GrResourceEntry* prev = entry->fPrev;
79 GrResourceEntry* next = entry->fNext;
91 if (!entry->isLocked()) {
98 fClientDetachedBytes += entry->resource()->sizeInBytes();
101 fEntryBytes -= entry->resource()->sizeInBytes();
105 void GrResourceCache::attachToHead(GrResourceEntry* entry,
107 entry->fPrev = NULL;
108 entry->fNext = fHead;
110 fHead->fPrev = entry;
112 fHead = entry;
114 fTail = entry;
116 if (!entry->isLocked()) {
123 fClientDetachedBytes -= entry->resource()->sizeInBytes();
126 fEntryBytes += entry->resource()->sizeInBytes();
139 static bool LT(const T& entry, const Key& key) {
140 return entry.key() < key.fKey;
142 static bool EQ(const T& entry, const Key& key) {
143 return entry.key() == key.fKey;
146 static uint32_t GetHash(const T& entry) {
147 return entry.key().hashIndex();
162 GrResourceEntry* entry = fCache.find(key);
163 if (entry) {
164 this->internalDetach(entry, false);
165 // mark the entry as "busy" so it doesn't get purged
167 if (kNested_LockType == type || !entry->isLocked()) {
168 entry->lock();
170 this->attachToHead(entry, false);
172 return entry;
188 GrResourceEntry* entry = new GrResourceEntry(key, resource);
190 // mark the entry as "busy" so it doesn't get purged
192 entry->lock();
194 this->attachToHead(entry, false);
195 fCache.insert(key, entry);
199 entry, fEntryCount, resource->sizeInBytes(), fEntryBytes);
203 return entry;
206 void GrResourceCache::detach(GrResourceEntry* entry) {
208 internalDetach(entry, true);
209 fCache.remove(entry->fKey, entry);
212 void GrResourceCache::reattachAndUnlock(GrResourceEntry* entry) {
214 if (entry->resource()->isValid()) {
215 attachToHead(entry, true);
216 fCache.insert(entry->key(), entry);
225 size_t size = entry->resource()->sizeInBytes();
229 this->unlock(entry);
232 void GrResourceCache::unlock(GrResourceEntry* entry) {
235 GrAssert(entry);
236 GrAssert(entry->isLocked());
237 GrAssert(fCache.find(entry->key()));
239 entry->unlock();
240 if (!entry->isLocked()) {
261 GrResourceEntry* entry = fTail;
262 while (entry && fUnlockedEntryCount) {
269 GrResourceEntry* prev = entry->fPrev;
270 if (!entry->isLocked()) {
272 fCache.remove(entry->fKey, entry);
275 this->internalDetach(entry, false);
279 entry->resource(),
280 entry->resource()->width(),
281 entry->resource()->height());
283 delete entry;
285 entry = prev;
295 GrResourceEntry* entry = fHead;
299 // entry out. Instead change the budget and purge.
328 const GrResourceEntry* entry = head;
330 while (entry) {
331 if (target == entry) {
334 entry = entry->next();
355 GrResourceEntry* entry = fHead;
359 while (entry) {
360 entry->validate();
361 GrAssert(fCache.find(entry->key()));
363 bytes += entry->resource()->sizeInBytes();
364 if (!entry->isLocked()) {
367 entry = entry->fNext;
374 for (entry = fTail; entry; entry = entry->fPrev) {