OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_TILES_IMAGE_CONTROLLER_H_ | 5 #ifndef CC_TILES_IMAGE_CONTROLLER_H_ |
6 #define CC_TILES_IMAGE_CONTROLLER_H_ | 6 #define CC_TILES_IMAGE_CONTROLLER_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 // Virtual for testing. | 49 // Virtual for testing. |
50 virtual void UnlockImageDecode(ImageDecodeRequestId id); | 50 virtual void UnlockImageDecode(ImageDecodeRequestId id); |
51 | 51 |
52 // This function requests that the given image be decoded and locked. Once the | 52 // This function requests that the given image be decoded and locked. Once the |
53 // callback has been issued, it is passed an ID, which should be used to | 53 // callback has been issued, it is passed an ID, which should be used to |
54 // unlock this image. It is up to the caller to ensure that the image is later | 54 // unlock this image. It is up to the caller to ensure that the image is later |
55 // unlocked using UnlockImageDecode. | 55 // unlocked using UnlockImageDecode. |
56 // Virtual for testing. | 56 // Virtual for testing. |
57 virtual ImageDecodeRequestId QueueImageDecode( | 57 virtual ImageDecodeRequestId QueueImageDecode( |
58 sk_sp<const SkImage> image, | 58 sk_sp<const SkImage> image, |
59 const ImageDecodedCallback& callback); | 59 const ImageDecodedCallback& callback, |
| 60 ImageDecodeCache::ImageDecodeType type); |
60 size_t image_cache_max_limit_bytes() const { | 61 size_t image_cache_max_limit_bytes() const { |
61 return image_cache_max_limit_bytes_; | 62 return image_cache_max_limit_bytes_; |
62 } | 63 } |
63 | 64 |
64 void SetMaxImageCacheLimitBytesForTesting(size_t bytes) { | 65 void SetMaxImageCacheLimitBytesForTesting(size_t bytes) { |
65 image_cache_max_limit_bytes_ = bytes; | 66 image_cache_max_limit_bytes_ = bytes; |
66 } | 67 } |
67 | 68 |
68 protected: | 69 protected: |
69 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; | 70 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; |
70 | 71 |
71 private: | 72 private: |
72 struct ImageDecodeRequest { | 73 struct ImageDecodeRequest { |
73 ImageDecodeRequest(); | 74 ImageDecodeRequest(); |
74 ImageDecodeRequest(ImageDecodeRequestId id, | 75 ImageDecodeRequest(ImageDecodeRequestId id, |
75 const DrawImage& draw_image, | 76 const DrawImage& draw_image, |
76 const ImageDecodedCallback& callback, | 77 const ImageDecodedCallback& callback, |
77 scoped_refptr<TileTask> task, | 78 scoped_refptr<TileTask> task, |
78 bool need_unref); | 79 bool need_unref, |
| 80 ImageDecodeCache::ImageDecodeType decode_type); |
79 ImageDecodeRequest(ImageDecodeRequest&& other); | 81 ImageDecodeRequest(ImageDecodeRequest&& other); |
80 ImageDecodeRequest(const ImageDecodeRequest& other); | 82 ImageDecodeRequest(const ImageDecodeRequest& other); |
81 ~ImageDecodeRequest(); | 83 ~ImageDecodeRequest(); |
82 | 84 |
83 ImageDecodeRequest& operator=(ImageDecodeRequest&& other); | 85 ImageDecodeRequest& operator=(ImageDecodeRequest&& other); |
84 ImageDecodeRequest& operator=(const ImageDecodeRequest& other); | 86 ImageDecodeRequest& operator=(const ImageDecodeRequest& other); |
85 | 87 |
86 ImageDecodeRequestId id; | 88 ImageDecodeRequestId id; |
87 DrawImage draw_image; | 89 DrawImage draw_image; |
88 ImageDecodedCallback callback; | 90 ImageDecodedCallback callback; |
89 scoped_refptr<TileTask> task; | 91 scoped_refptr<TileTask> task; |
90 bool need_unref; | 92 bool need_unref; |
| 93 ImageDecodeCache::ImageDecodeType decode_type; |
91 }; | 94 }; |
92 | 95 |
93 void StopWorkerTasks(); | 96 void StopWorkerTasks(); |
94 | 97 |
95 // Called from the worker thread. | 98 // Called from the worker thread. |
96 void ProcessNextImageDecodeOnWorkerThread(); | 99 void ProcessNextImageDecodeOnWorkerThread(); |
97 | 100 |
98 void ImageDecodeCompleted(ImageDecodeRequestId id); | 101 void ImageDecodeCompleted(ImageDecodeRequestId id); |
99 void GenerateTasksForOrphanedRequests(); | 102 void GenerateTasksForOrphanedRequests(); |
100 | 103 |
(...skipping 21 matching lines...) Expand all Loading... |
122 std::vector<ImageDecodeRequest> orphaned_decode_requests_; | 125 std::vector<ImageDecodeRequest> orphaned_decode_requests_; |
123 | 126 |
124 base::WeakPtrFactory<ImageController> weak_ptr_factory_; | 127 base::WeakPtrFactory<ImageController> weak_ptr_factory_; |
125 | 128 |
126 DISALLOW_COPY_AND_ASSIGN(ImageController); | 129 DISALLOW_COPY_AND_ASSIGN(ImageController); |
127 }; | 130 }; |
128 | 131 |
129 } // namespace cc | 132 } // namespace cc |
130 | 133 |
131 #endif // CC_TILES_IMAGE_CONTROLLER_H_ | 134 #endif // CC_TILES_IMAGE_CONTROLLER_H_ |
OLD | NEW |