Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h

Issue 2398453002: Rewrap comments to 80 columns in Source/platform/graphics/. (Closed)
Patch Set: Review feedback Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 // FUNCTION 45 // FUNCTION
46 // 46 //
47 // ImageDecodingStore is a class used to manage cached decoder objects. 47 // ImageDecodingStore is a class used to manage cached decoder objects.
48 // 48 //
49 // EXTERNAL OBJECTS 49 // EXTERNAL OBJECTS
50 // 50 //
51 // ImageDecoder 51 // ImageDecoder
52 // A decoder object. It is used to decode raw data into bitmap images. 52 // A decoder object. It is used to decode raw data into bitmap images.
53 // 53 //
54 // ImageFrameGenerator 54 // ImageFrameGenerator
55 // This is a direct user of this cache. Responsible for generating bitmap imag es 55 // This is a direct user of this cache. Responsible for generating bitmap
56 // using an ImageDecoder. It contains encoded image data and is used to repres ent 56 // images using an ImageDecoder. It contains encoded image data and is used to
57 // one image file. It is used to index image and decoder objects in the cache. 57 // represent one image file. It is used to index image and decoder objects in
58 // the cache.
58 // 59 //
59 // THREAD SAFETY 60 // THREAD SAFETY
60 // 61 //
61 // All public methods can be used on any thread. 62 // All public methods can be used on any thread.
62 63
63 class PLATFORM_EXPORT ImageDecodingStore final { 64 class PLATFORM_EXPORT ImageDecodingStore final {
64 USING_FAST_MALLOC(ImageDecodingStore); 65 USING_FAST_MALLOC(ImageDecodingStore);
65 WTF_MAKE_NONCOPYABLE(ImageDecodingStore); 66 WTF_MAKE_NONCOPYABLE(ImageDecodingStore);
66 67
67 public: 68 public:
68 static std::unique_ptr<ImageDecodingStore> create() { 69 static std::unique_ptr<ImageDecodingStore> create() {
69 return wrapUnique(new ImageDecodingStore); 70 return wrapUnique(new ImageDecodingStore);
70 } 71 }
71 ~ImageDecodingStore(); 72 ~ImageDecodingStore();
72 73
73 static ImageDecodingStore& instance(); 74 static ImageDecodingStore& instance();
74 75
75 // Access a cached decoder object. A decoder is indexed by origin (ImageFrameG enerator) 76 // Accesses a cached decoder object. A decoder is indexed by origin
76 // and scaled size. Return true if the cached object is found. 77 // (ImageFrameGenerator) and scaled size. Returns true if the cached object is
78 // found.
77 bool lockDecoder(const ImageFrameGenerator*, 79 bool lockDecoder(const ImageFrameGenerator*,
78 const SkISize& scaledSize, 80 const SkISize& scaledSize,
79 ImageDecoder**); 81 ImageDecoder**);
80 void unlockDecoder(const ImageFrameGenerator*, const ImageDecoder*); 82 void unlockDecoder(const ImageFrameGenerator*, const ImageDecoder*);
81 void insertDecoder(const ImageFrameGenerator*, std::unique_ptr<ImageDecoder>); 83 void insertDecoder(const ImageFrameGenerator*, std::unique_ptr<ImageDecoder>);
82 void removeDecoder(const ImageFrameGenerator*, const ImageDecoder*); 84 void removeDecoder(const ImageFrameGenerator*, const ImageDecoder*);
83 85
84 // Remove all cache entries indexed by ImageFrameGenerator. 86 // Remove all cache entries indexed by ImageFrameGenerator.
85 void removeCacheIndexedByGenerator(const ImageFrameGenerator*); 87 void removeCacheIndexedByGenerator(const ImageFrameGenerator*);
86 88
(...skipping 26 matching lines...) Expand all
113 virtual ~CacheEntry() { ASSERT(!m_useCount); } 115 virtual ~CacheEntry() { ASSERT(!m_useCount); }
114 116
115 const ImageFrameGenerator* generator() const { return m_generator; } 117 const ImageFrameGenerator* generator() const { return m_generator; }
116 int useCount() const { return m_useCount; } 118 int useCount() const { return m_useCount; }
117 void incrementUseCount() { ++m_useCount; } 119 void incrementUseCount() { ++m_useCount; }
118 void decrementUseCount() { 120 void decrementUseCount() {
119 --m_useCount; 121 --m_useCount;
120 ASSERT(m_useCount >= 0); 122 ASSERT(m_useCount >= 0);
121 } 123 }
122 124
123 // FIXME: getSafeSize() returns size in bytes truncated to a 32-bits integer . 125 // FIXME: getSafeSize() returns the size in bytes truncated to a 32-bit
124 // Find a way to get the size in 64-bits. 126 // integer. Find a way to get the size in 64-bits.
125 virtual size_t memoryUsageInBytes() const = 0; 127 virtual size_t memoryUsageInBytes() const = 0;
126 virtual CacheType type() const = 0; 128 virtual CacheType type() const = 0;
127 129
128 protected: 130 protected:
129 const ImageFrameGenerator* m_generator; 131 const ImageFrameGenerator* m_generator;
130 int m_useCount; 132 int m_useCount;
131 133
132 private: 134 private:
133 CacheEntry* m_prev; 135 CacheEntry* m_prev;
134 CacheEntry* m_next; 136 CacheEntry* m_next;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 U* cacheMap, 196 U* cacheMap,
195 V* identifierMap, 197 V* identifierMap,
196 Vector<std::unique_ptr<CacheEntry>>* deletionList); 198 Vector<std::unique_ptr<CacheEntry>>* deletionList);
197 199
198 // Helper method to remove a cache entry. Uses the templated version base on 200 // Helper method to remove a cache entry. Uses the templated version base on
199 // the type of cache entry. 201 // the type of cache entry.
200 void removeFromCacheInternal( 202 void removeFromCacheInternal(
201 const CacheEntry*, 203 const CacheEntry*,
202 Vector<std::unique_ptr<CacheEntry>>* deletionList); 204 Vector<std::unique_ptr<CacheEntry>>* deletionList);
203 205
204 // Helper method to remove all cache entries associated with a ImageFraneGener ator. 206 // Helper method to remove all cache entries associated with an
205 // Ownership of cache entries is transferred to deletionList. 207 // ImageFrameGenerator. Ownership of the cache entries is transferred to
208 // |deletionList|.
206 template <class U, class V> 209 template <class U, class V>
207 void removeCacheIndexedByGeneratorInternal( 210 void removeCacheIndexedByGeneratorInternal(
208 U* cacheMap, 211 U* cacheMap,
209 V* identifierMap, 212 V* identifierMap,
210 const ImageFrameGenerator*, 213 const ImageFrameGenerator*,
211 Vector<std::unique_ptr<CacheEntry>>* deletionList); 214 Vector<std::unique_ptr<CacheEntry>>* deletionList);
212 215
213 // Helper method to remove cache entry pointers from the LRU list. 216 // Helper method to remove cache entry pointers from the LRU list.
214 void removeFromCacheListInternal( 217 void removeFromCacheListInternal(
215 const Vector<std::unique_ptr<CacheEntry>>& deletionList); 218 const Vector<std::unique_ptr<CacheEntry>>& deletionList);
216 219
217 // A doubly linked list that maintains usage history of cache entries. 220 // A doubly linked list that maintains usage history of cache entries.
218 // This is used for eviction of old entries. 221 // This is used for eviction of old entries.
219 // Head of this list is the least recently used cache entry. 222 // Head of this list is the least recently used cache entry.
220 // Tail of this list is the most recently used cache entry. 223 // Tail of this list is the most recently used cache entry.
221 DoublyLinkedList<CacheEntry> m_orderedCacheList; 224 DoublyLinkedList<CacheEntry> m_orderedCacheList;
222 225
223 // A lookup table for all decoder cache objects. Owns all decoder cache object s. 226 // A lookup table for all decoder cache objects. Owns all decoder cache
227 // objects.
224 typedef HashMap<DecoderCacheKey, std::unique_ptr<DecoderCacheEntry>> 228 typedef HashMap<DecoderCacheKey, std::unique_ptr<DecoderCacheEntry>>
225 DecoderCacheMap; 229 DecoderCacheMap;
226 DecoderCacheMap m_decoderCacheMap; 230 DecoderCacheMap m_decoderCacheMap;
227 231
228 // A lookup table to map ImageFrameGenerator to all associated 232 // A lookup table to map ImageFrameGenerator to all associated
229 // decoder cache keys. 233 // decoder cache keys.
230 typedef HashSet<DecoderCacheKey> DecoderCacheKeySet; 234 typedef HashSet<DecoderCacheKey> DecoderCacheKeySet;
231 typedef HashMap<const ImageFrameGenerator*, DecoderCacheKeySet> 235 typedef HashMap<const ImageFrameGenerator*, DecoderCacheKeySet>
232 DecoderCacheKeyMap; 236 DecoderCacheKeyMap;
233 DecoderCacheKeyMap m_decoderCacheKeyMap; 237 DecoderCacheKeyMap m_decoderCacheKeyMap;
234 238
235 size_t m_heapLimitInBytes; 239 size_t m_heapLimitInBytes;
236 size_t m_heapMemoryUsageInBytes; 240 size_t m_heapMemoryUsageInBytes;
237 241
238 // Protect concurrent access to these members: 242 // Protect concurrent access to these members:
239 // m_orderedCacheList 243 // m_orderedCacheList
240 // m_decoderCacheMap and all CacheEntrys stored in it 244 // m_decoderCacheMap and all CacheEntrys stored in it
241 // m_decoderCacheKeyMap 245 // m_decoderCacheKeyMap
242 // m_heapLimitInBytes 246 // m_heapLimitInBytes
243 // m_heapMemoryUsageInBytes 247 // m_heapMemoryUsageInBytes
244 // This mutex also protects calls to underlying skBitmap's 248 // This mutex also protects calls to underlying skBitmap's
245 // lockPixels()/unlockPixels() as they are not threadsafe. 249 // lockPixels()/unlockPixels() as they are not threadsafe.
246 Mutex m_mutex; 250 Mutex m_mutex;
247 }; 251 };
248 252
249 } // namespace blink 253 } // namespace blink
250 254
251 #endif 255 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698