| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_DECODE_CONTROLLER_H_ | 5 #ifndef CC_TILES_IMAGE_DECODE_CONTROLLER_H_ |
| 6 #define CC_TILES_IMAGE_DECODE_CONTROLLER_H_ | 6 #define CC_TILES_IMAGE_DECODE_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| 11 #include "base/hash.h" | |
| 12 #include "base/memory/discardable_memory_allocator.h" | 11 #include "base/memory/discardable_memory_allocator.h" |
| 13 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 14 #include "base/numerics/safe_math.h" | 13 #include "base/numerics/safe_math.h" |
| 15 #include "base/threading/thread_checker.h" | 14 #include "base/threading/thread_checker.h" |
| 16 #include "cc/base/cc_export.h" | 15 #include "cc/base/cc_export.h" |
| 17 #include "cc/playback/decoded_draw_image.h" | 16 #include "cc/playback/decoded_draw_image.h" |
| 18 #include "cc/playback/draw_image.h" | 17 #include "cc/playback/draw_image.h" |
| 19 #include "cc/raster/tile_task_runner.h" | 18 #include "cc/raster/tile_task_runner.h" |
| 20 #include "skia/ext/refptr.h" | 19 #include "skia/ext/refptr.h" |
| 21 | 20 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 } // namespace cc | 72 } // namespace cc |
| 74 | 73 |
| 75 // Hash function for the above ImageDecodeControllerKey. | 74 // Hash function for the above ImageDecodeControllerKey. |
| 76 namespace BASE_HASH_NAMESPACE { | 75 namespace BASE_HASH_NAMESPACE { |
| 77 template <> | 76 template <> |
| 78 struct hash<cc::ImageDecodeControllerKey> { | 77 struct hash<cc::ImageDecodeControllerKey> { |
| 79 size_t operator()(const cc::ImageDecodeControllerKey& key) const { | 78 size_t operator()(const cc::ImageDecodeControllerKey& key) const { |
| 80 // TODO(vmpstr): This is a mess. Maybe it's faster to just search the vector | 79 // TODO(vmpstr): This is a mess. Maybe it's faster to just search the vector |
| 81 // always (forwards or backwards to account for LRU). | 80 // always (forwards or backwards to account for LRU). |
| 82 uint64_t src_rect_hash = | 81 uint64_t src_rect_hash = |
| 83 base::HashInts(static_cast<uint64_t>(base::HashInts( | 82 base::HashPair(static_cast<uint64_t>(base::HashPair( |
| 84 key.src_rect().x(), key.src_rect().y())), | 83 key.src_rect().x(), key.src_rect().y())), |
| 85 static_cast<uint64_t>(base::HashInts( | 84 static_cast<uint64_t>(base::HashPair( |
| 86 key.src_rect().width(), key.src_rect().height()))); | 85 key.src_rect().width(), key.src_rect().height()))); |
| 87 | 86 |
| 88 uint64_t target_size_hash = | 87 uint64_t target_size_hash = |
| 89 base::HashInts(key.target_size().width(), key.target_size().height()); | 88 base::HashPair(key.target_size().width(), key.target_size().height()); |
| 90 | 89 |
| 91 return base::HashInts(base::HashInts(src_rect_hash, target_size_hash), | 90 return base::HashPair(base::HashPair(src_rect_hash, target_size_hash), |
| 92 base::HashInts(key.image_id(), key.filter_quality())); | 91 base::HashPair(key.image_id(), key.filter_quality())); |
| 93 } | 92 } |
| 94 }; | 93 }; |
| 95 } // namespace BASE_HASH_NAMESPACE | 94 } // namespace BASE_HASH_NAMESPACE |
| 96 | 95 |
| 97 namespace cc { | 96 namespace cc { |
| 98 | 97 |
| 99 // ImageDecodeController is responsible for generating decode tasks, decoding | 98 // ImageDecodeController is responsible for generating decode tasks, decoding |
| 100 // images, storing images in cache, and being able to return the decoded images | 99 // images, storing images in cache, and being able to return the decoded images |
| 101 // when requested. | 100 // when requested. |
| 102 | 101 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 | 249 |
| 251 // Note that this is used for cases where the only thing we do is preroll the | 250 // Note that this is used for cases where the only thing we do is preroll the |
| 252 // image the first time we see it. This mimics the previous behavior and | 251 // image the first time we see it. This mimics the previous behavior and |
| 253 // should over time change as the compositor starts to handle more cases. | 252 // should over time change as the compositor starts to handle more cases. |
| 254 base::hash_set<uint32_t> prerolled_images_; | 253 base::hash_set<uint32_t> prerolled_images_; |
| 255 }; | 254 }; |
| 256 | 255 |
| 257 } // namespace cc | 256 } // namespace cc |
| 258 | 257 |
| 259 #endif // CC_TILES_IMAGE_DECODE_CONTROLLER_H_ | 258 #endif // CC_TILES_IMAGE_DECODE_CONTROLLER_H_ |
| OLD | NEW |