Chromium Code Reviews| Index: cc/tiles/checker_image_tracker.h |
| diff --git a/cc/tiles/checker_image_tracker.h b/cc/tiles/checker_image_tracker.h |
| index db5ccf404594a38c5cede7ce3e683180e73a7be8..3a1ccf7614164a5c5c9f27dbbb97c84ad1493910 100644 |
| --- a/cc/tiles/checker_image_tracker.h |
| +++ b/cc/tiles/checker_image_tracker.h |
| @@ -47,8 +47,14 @@ class CC_EXPORT CheckerImageTracker { |
| // Returns the set of images to invalidate on the sync tree. |
| const ImageIdFlatSet& TakeImagesToInvalidateOnSyncTree(); |
| + // Called when the sync tree is activated. Each call to |
| + // TakeImagesToInvalidateOnSyncTree() must be followed by this when the |
| + // invalidated sync tree is activated. |
| void DidActivateSyncTree(); |
| + // Called to reset the tracker state on navigation or when going invisible. |
| + void ClearTracker(); |
| + |
| private: |
| enum class DecodePolicy { |
| // The image can be decoded asynchronously from raster. When set, the image |
| @@ -62,6 +68,20 @@ class CC_EXPORT CheckerImageTracker { |
| SYNC_PERMANENT, |
| }; |
| + class ScopedDecodeHolder { |
|
vmpstr
2017/05/09 22:06:21
ScopedDecodeUnlocker maybe? Can you also drop a cl
Khushal
2017/05/10 22:47:09
Done.
|
| + public: |
| + ScopedDecodeHolder(ImageController* controller, |
| + ImageController::ImageDecodeRequestId request_id) |
| + : controller_(controller), request_id_(request_id) {} |
| + ~ScopedDecodeHolder() { controller_->UnlockImageDecode(request_id_); } |
| + |
| + private: |
| + ImageController* controller_; |
| + ImageController::ImageDecodeRequestId request_id_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedDecodeHolder); |
| + }; |
| + |
| void DidFinishImageDecode(ImageId image_id, |
| ImageController::ImageDecodeRequestId request_id, |
| ImageController::ImageDecodeResult result); |
| @@ -91,14 +111,11 @@ class CC_EXPORT CheckerImageTracker { |
| sk_sp<const SkImage> outstanding_image_decode_; |
| // A map of ImageId to its DecodePolicy. |
| - // TODO(khushalsagar): Limit the size of this set. |
| - // TODO(khushalsagar): Plumb navigation changes here to reset this. See |
| - // crbug.com/693228. |
| std::unordered_map<ImageId, DecodePolicy> image_async_decode_state_; |
| // A map of image id to image decode request id for images to be unlocked. |
| - std::unordered_map<ImageId, ImageController::ImageDecodeRequestId> |
| - image_id_to_decode_request_id_; |
| + std::unordered_map<ImageId, std::unique_ptr<ScopedDecodeHolder>> |
| + image_id_to_decode_; |
| base::WeakPtrFactory<CheckerImageTracker> weak_factory_; |
| }; |