| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkChecksum.h" | 8 #include "SkChecksum.h" |
| 9 #include "SkScaledImageCache.h" | 9 #include "SkScaledImageCache.h" |
| 10 #include "SkMipMap.h" | 10 #include "SkMipMap.h" |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 void SkScaledImageCache::init() { | 135 void SkScaledImageCache::init() { |
| 136 fHead = NULL; | 136 fHead = NULL; |
| 137 fTail = NULL; | 137 fTail = NULL; |
| 138 #ifdef USE_HASH | 138 #ifdef USE_HASH |
| 139 fHash = new Hash; | 139 fHash = new Hash; |
| 140 #else | 140 #else |
| 141 fHash = NULL; | 141 fHash = NULL; |
| 142 #endif | 142 #endif |
| 143 fBytesUsed = 0; | 143 fBytesUsed = 0; |
| 144 fCount = 0; | 144 fCount = 0; |
| 145 fMaximumOutputSizeForHighQualityFilter = 0; |
| 145 fAllocator = NULL; | 146 fAllocator = NULL; |
| 146 | 147 |
| 147 // One of these should be explicit set by the caller after we return. | 148 // One of these should be explicit set by the caller after we return. |
| 148 fByteLimit = 0; | 149 fByteLimit = 0; |
| 149 fDiscardableFactory = NULL; | 150 fDiscardableFactory = NULL; |
| 150 } | 151 } |
| 151 | 152 |
| 152 #include "SkDiscardableMemory.h" | 153 #include "SkDiscardableMemory.h" |
| 153 | 154 |
| 154 class SkOneShotDiscardablePixelRef : public SkPixelRef { | 155 class SkOneShotDiscardablePixelRef : public SkPixelRef { |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 while (rec) { | 632 while (rec) { |
| 632 locked += rec->fLockCount > 0; | 633 locked += rec->fLockCount > 0; |
| 633 rec = rec->fNext; | 634 rec = rec->fNext; |
| 634 } | 635 } |
| 635 | 636 |
| 636 SkDebugf("SkScaledImageCache: count=%d bytes=%d locked=%d %s\n", | 637 SkDebugf("SkScaledImageCache: count=%d bytes=%d locked=%d %s\n", |
| 637 fCount, fBytesUsed, locked, | 638 fCount, fBytesUsed, locked, |
| 638 fDiscardableFactory ? "discardable" : "malloc"); | 639 fDiscardableFactory ? "discardable" : "malloc"); |
| 639 } | 640 } |
| 640 | 641 |
| 642 void SkScaledImageCache::setMaximumOutputSizeForHighQualityFilter(size_t size) { |
| 643 fMaximumOutputSizeForHighQualityFilter = size; |
| 644 } |
| 645 |
| 646 size_t SkScaledImageCache::getMaximumOutputSizeForHighQualityFilter() const { |
| 647 return fMaximumOutputSizeForHighQualityFilter; |
| 648 } |
| 649 |
| 641 /////////////////////////////////////////////////////////////////////////////// | 650 /////////////////////////////////////////////////////////////////////////////// |
| 642 | 651 |
| 643 #include "SkThread.h" | 652 #include "SkThread.h" |
| 644 | 653 |
| 645 SK_DECLARE_STATIC_MUTEX(gMutex); | 654 SK_DECLARE_STATIC_MUTEX(gMutex); |
| 646 static SkScaledImageCache* gScaledImageCache = NULL; | 655 static SkScaledImageCache* gScaledImageCache = NULL; |
| 647 static void cleanup_gScaledImageCache() { | 656 static void cleanup_gScaledImageCache() { |
| 648 // We'll clean this up in our own tests, but disable for clients. | 657 // We'll clean this up in our own tests, but disable for clients. |
| 649 // Chrome seems to have funky multi-process things going on in unit tests th
at | 658 // Chrome seems to have funky multi-process things going on in unit tests th
at |
| 650 // makes this unsafe to delete when the main process atexit()s. | 659 // makes this unsafe to delete when the main process atexit()s. |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 SkBitmap::Allocator* SkScaledImageCache::GetAllocator() { | 751 SkBitmap::Allocator* SkScaledImageCache::GetAllocator() { |
| 743 SkAutoMutexAcquire am(gMutex); | 752 SkAutoMutexAcquire am(gMutex); |
| 744 return get_cache()->allocator(); | 753 return get_cache()->allocator(); |
| 745 } | 754 } |
| 746 | 755 |
| 747 void SkScaledImageCache::Dump() { | 756 void SkScaledImageCache::Dump() { |
| 748 SkAutoMutexAcquire am(gMutex); | 757 SkAutoMutexAcquire am(gMutex); |
| 749 get_cache()->dump(); | 758 get_cache()->dump(); |
| 750 } | 759 } |
| 751 | 760 |
| 761 void SkScaledImageCache::SetMaximumOutputSizeForHighQualityFilter(size_t size) { |
| 762 SkAutoMutexAcquire am(gMutex); |
| 763 get_cache()->setMaximumOutputSizeForHighQualityFilter(size); |
| 764 } |
| 765 |
| 766 size_t SkScaledImageCache::GetMaximumOutputSizeForHighQualityFilter() { |
| 767 SkAutoMutexAcquire am(gMutex); |
| 768 return get_cache()->getMaximumOutputSizeForHighQualityFilter(); |
| 769 } |
| 770 |
| 752 /////////////////////////////////////////////////////////////////////////////// | 771 /////////////////////////////////////////////////////////////////////////////// |
| 753 | 772 |
| 754 #include "SkGraphics.h" | 773 #include "SkGraphics.h" |
| 755 | 774 |
| 756 size_t SkGraphics::GetImageCacheBytesUsed() { | 775 size_t SkGraphics::GetImageCacheBytesUsed() { |
| 757 return SkScaledImageCache::GetBytesUsed(); | 776 return SkScaledImageCache::GetBytesUsed(); |
| 758 } | 777 } |
| 759 | 778 |
| 760 size_t SkGraphics::GetImageCacheByteLimit() { | 779 size_t SkGraphics::GetImageCacheByteLimit() { |
| 761 return SkScaledImageCache::GetByteLimit(); | 780 return SkScaledImageCache::GetByteLimit(); |
| 762 } | 781 } |
| 763 | 782 |
| 764 size_t SkGraphics::SetImageCacheByteLimit(size_t newLimit) { | 783 size_t SkGraphics::SetImageCacheByteLimit(size_t newLimit) { |
| 765 return SkScaledImageCache::SetByteLimit(newLimit); | 784 return SkScaledImageCache::SetByteLimit(newLimit); |
| 766 } | 785 } |
| OLD | NEW |