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

Side by Side Diff: cc/tiles/image_manager.cc

Issue 2345833002: cc: Move (partially) the predecode image tracking to ImageManager. (Closed)
Patch Set: update Created 4 years, 3 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
« no previous file with comments | « cc/tiles/image_manager.h ('k') | cc/tiles/image_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "cc/tiles/image_manager.h" 5 #include "cc/tiles/image_manager.h"
6 6
7 namespace cc { 7 namespace cc {
8 8
9 ImageManager::ImageManager() = default; 9 ImageManager::ImageManager() = default;
10 ImageManager::~ImageManager() = default; 10 ImageManager::~ImageManager() = default;
11 11
12 void ImageManager::SetImageDecodeController(ImageDecodeController* controller) { 12 void ImageManager::SetImageDecodeController(ImageDecodeController* controller) {
13 if (!controller) {
enne (OOO) 2016/09/16 18:21:37 Sure, but do you also need to do this when the ima
vmpstr 2016/09/16 18:38:49 Well... I mean I can add a DCHECK, but normally if
14 SetPredecodeImages(std::vector<DrawImage>(),
15 ImageDecodeController::TracingInfo());
16 }
13 controller_ = controller; 17 controller_ = controller;
14 } 18 }
15 19
16 void ImageManager::GetTasksForImagesAndRef( 20 void ImageManager::GetTasksForImagesAndRef(
17 std::vector<DrawImage>* images, 21 std::vector<DrawImage>* images,
18 std::vector<scoped_refptr<TileTask>>* tasks, 22 std::vector<scoped_refptr<TileTask>>* tasks,
19 const ImageDecodeController::TracingInfo& tracing_info) { 23 const ImageDecodeController::TracingInfo& tracing_info) {
20 DCHECK(controller_); 24 DCHECK(controller_);
21 for (auto it = images->begin(); it != images->end();) { 25 for (auto it = images->begin(); it != images->end();) {
22 scoped_refptr<TileTask> task; 26 scoped_refptr<TileTask> task;
(...skipping 13 matching lines...) Expand all
36 DCHECK(controller_); 40 DCHECK(controller_);
37 for (auto image : images) 41 for (auto image : images)
38 controller_->UnrefImage(image); 42 controller_->UnrefImage(image);
39 } 43 }
40 44
41 void ImageManager::ReduceMemoryUsage() { 45 void ImageManager::ReduceMemoryUsage() {
42 DCHECK(controller_); 46 DCHECK(controller_);
43 controller_->ReduceCacheUsage(); 47 controller_->ReduceCacheUsage();
44 } 48 }
45 49
50 std::vector<scoped_refptr<TileTask>> ImageManager::SetPredecodeImages(
51 std::vector<DrawImage> images,
52 const ImageDecodeController::TracingInfo& tracing_info) {
53 std::vector<scoped_refptr<TileTask>> new_tasks;
54 GetTasksForImagesAndRef(&images, &new_tasks, tracing_info);
55 UnrefImages(predecode_locked_images_);
56 predecode_locked_images_ = std::move(images);
57 return new_tasks;
58 }
59
46 } // namespace cc 60 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/image_manager.h ('k') | cc/tiles/image_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698