Home | History | Annotate | Download | only in core

Lines Matching refs:Rec

24 static inline SkScaledImageCache::ID* rec_to_id(SkScaledImageCache::Rec* rec) {
25 return reinterpret_cast<SkScaledImageCache::ID*>(rec);
28 static inline SkScaledImageCache::Rec* id_to_rec(SkScaledImageCache::ID* id) {
29 return reinterpret_cast<SkScaledImageCache::Rec*>(id);
102 struct SkScaledImageCache::Rec {
103 Rec(const Key& key, const SkBitmap& bm) : fKey(key), fBitmap(bm) {
108 Rec(const Key& key, const SkMipMap* mip) : fKey(key) {
114 ~Rec() {
118 static const Key& GetKey(const Rec& rec) { return rec.fKey; }
125 Rec* fNext;
126 Rec* fPrev;
141 public SkTDynamicHash<SkScaledImageCache::Rec, SkScaledImageCache::Key> {};
150 static inline SkScaledImageCache::Rec* find_rec_in_list(
151 SkScaledImageCache::Rec* head, const Key & key) {
152 SkScaledImageCache::Rec* rec = head;
153 while ((rec != NULL) && (rec->fKey != key)) {
154 rec = rec->fNext;
156 return rec;
217 bool SkOneShotDiscardablePixelRef::onNewLockPixels(LockRec* rec) {
238 rec->fPixels = fDM->data();
239 rec->fColorTable = NULL;
240 rec->fRowBytes = fRB;
307 Rec* rec = fHead;
308 while (rec) {
309 Rec* next = rec->fNext;
310 SkDELETE(rec);
311 rec = next;
319 SkScaledImageCache::Rec* SkScaledImageCache::findAndLock(uint32_t genID,
330 SkScaledImageCache::Rec* SkScaledImageCache::findAndLock(const SkScaledImageCache::Key& key) {
335 Rec* rec = fHash->find(key);
337 Rec* rec = find_rec_in_list(fHead, key);
339 if (rec) {
340 this->moveToHead(rec); // for our LRU
341 rec->fLockCount += 1;
343 return rec;
364 Rec* rec = this->findAndLock(genID, SK_Scalar1, SK_Scalar1,
366 if (rec) {
367 SkASSERT(NULL == rec->fMip);
368 SkASSERT(rec->fBitmap.pixelRef());
369 *bitmap = rec->fBitmap;
371 return rec_to_id(rec);
382 Rec* rec = this->findAndLock(orig.getGenerationID(), scaleX,
384 if (rec) {
385 SkASSERT(NULL == rec->fMip);
386 SkASSERT(rec->fBitmap.pixelRef());
387 *scaled = rec->fBitmap;
389 return rec_to_id(rec);
394 Rec* rec = this->findAndLock(orig.getGenerationID(), 0, 0,
396 if (rec) {
397 SkASSERT(rec->fMip);
398 SkASSERT(NULL == rec->fBitmap.pixelRef());
399 *mip = rec->fMip;
401 return rec_to_id(rec);
409 SkScaledImageCache::ID* SkScaledImageCache::addAndLock(SkScaledImageCache::Rec* rec) {
410 SkASSERT(rec);
412 Rec* existing = this->findAndLock(rec->fKey);
416 existing->fBitmap = rec->fBitmap;
417 SkDELETE(rec);
421 this->addToHead(rec);
422 SkASSERT(1 == rec->fLockCount);
425 fHash->add(rec);
429 return rec_to_id(rec);
437 Rec* rec = SkNEW_ARGS(Rec, (key, bitmap));
438 return this->addAndLock(rec);
454 Rec* rec = SkNEW_ARGS(Rec, (key, scaled));
455 return this->addAndLock(rec);
465 Rec* rec = SkNEW_ARGS(Rec, (key, mip));
466 return this->addAndLock(rec);
475 Rec* rec = fHead;
476 while (rec != NULL) {
477 if (rec == id_to_rec(id)) {
481 rec = rec->fNext;
486 Rec* rec = id_to_rec(id);
487 SkASSERT(rec->fLockCount > 0);
488 rec->fLockCount -= 1;
492 if (0 == rec->fLockCount) {
512 Rec* rec = fTail;
513 while (rec) {
518 Rec* prev = rec->fPrev;
519 if (0 == rec->fLockCount) {
520 size_t used = rec->bytesUsed();
522 this->detach(rec);
524 fHash->remove(rec->fKey);
527 SkDELETE(rec);
532 rec = prev;
550 void SkScaledImageCache::detach(Rec* rec) {
551 Rec* prev = rec->fPrev;
552 Rec* next = rec->fNext;
555 SkASSERT(fHead == rec);
567 rec->fNext = rec->fPrev = NULL;
570 void SkScaledImageCache::moveToHead(Rec* rec) {
571 if (fHead == rec) {
580 this->detach(rec);
582 fHead->fPrev = rec;
583 rec->fNext = fHead;
584 fHead = rec;
589 void SkScaledImageCache::addToHead(Rec* rec) {
592 rec->fPrev = NULL;
593 rec->fNext = fHead;
595 rec;
597 fHead = rec;
599 fTail = rec;
601 fTotalBytesUsed += rec->bytesUsed();
631 const Rec* rec = fHead;
632 while (rec) {
634 used += rec->bytesUsed();
636 rec = rec->fNext;
640 rec = fTail;
641 while (rec) {
644 SkASSERT(used >= rec->bytesUsed());
645 used -= rec->bytesUsed();
646 rec = rec->fPrev;
657 const Rec* rec = fHead;
659 while (rec) {
660 locked += rec->fLockCount > 0;
661 rec = rec->fNext;