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

Unified Diff: cc/tiles/tile_manager.cc

Issue 1890903002: cc: Simplify Task and its derived classes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_tile_task_runner
Patch Set: nits Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« cc/raster/task_types.h ('K') | « cc/tiles/tile_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/tiles/tile_manager.cc
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
index d86642eb74c592db7a29d92c78edba2599653cb5..8a01ba0bc316d6912ad99c410187b6fdff1321e4 100644
--- a/cc/tiles/tile_manager.cc
+++ b/cc/tiles/tile_manager.cc
@@ -25,7 +25,6 @@
#include "cc/debug/traced_value.h"
#include "cc/layers/picture_layer_impl.h"
#include "cc/raster/task_category.h"
-#include "cc/raster/tile_task_runner.h"
#include "cc/tiles/tile.h"
#include "ui/gfx/geometry/rect_conversions.h"
@@ -41,7 +40,7 @@ DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
"Compositing.%s.RasterTask.RasterUs",
"Compositing.%s.RasterTask.RasterPixelsPerMs");
-class RasterTaskImpl : public RasterTask {
+class RasterTaskImpl : public Task {
public:
RasterTaskImpl(Resource* resource,
scoped_refptr<RasterSource> raster_source,
@@ -58,8 +57,8 @@ class RasterTaskImpl : public RasterTask {
uint64_t resource_content_id,
int source_frame_number,
std::unique_ptr<RasterBuffer> raster_buffer,
- ImageDecodeTask::Vector* dependencies)
- : RasterTask(dependencies),
+ Task::Vector* dependencies)
+ : Task(dependencies),
resource_(resource),
raster_source_(std::move(raster_source)),
content_rect_(content_rect),
@@ -75,7 +74,7 @@ class RasterTaskImpl : public RasterTask {
resource_content_id_(resource_content_id),
source_frame_number_(source_frame_number),
raster_buffer_(std::move(raster_buffer)) {
- SetTaskTypeId(TASK_TYPE_RASTER);
+ SetTaskType(TASK_TYPE_RASTER);
}
// Overridden from Task:
@@ -133,7 +132,7 @@ const size_t kAllDoneTaskPriority = 3u;
size_t kTileTaskPriorityBase = 10u;
void InsertNodeForTask(TaskGraph* graph,
- TileTask* task,
+ Task* task,
uint16_t category,
uint16_t priority,
size_t dependencies) {
@@ -146,15 +145,20 @@ void InsertNodeForTask(TaskGraph* graph,
}
void InsertNodeForDecodeTask(TaskGraph* graph,
- ImageDecodeTask* task,
+ Task* task,
uint16_t category,
uint16_t priority) {
uint32_t dependency_count = 0u;
- auto* dependency = task->dependency().get();
- if (dependency && !dependency->HasCompleted()) {
- InsertNodeForDecodeTask(graph, dependency, category, priority);
- graph->edges.push_back(TaskGraph::Edge(dependency, task));
- dependency_count = 1u;
+
+ if (task->dependencies().size()) {
+ DCHECK_EQ(task->dependencies().size(), 1u);
+ Task* dependency = task->dependencies()[0].get();
+
+ if (!dependency->HasCompleted()) {
+ InsertNodeForDecodeTask(graph, dependency, category, priority);
+ graph->edges.push_back(TaskGraph::Edge(dependency, task));
+ dependency_count = 1u;
+ }
}
InsertNodeForTask(graph, task, task->SupportsConcurrentExecution()
? category
@@ -163,8 +167,8 @@ void InsertNodeForDecodeTask(TaskGraph* graph,
}
void InsertNodesForRasterTask(TaskGraph* graph,
- RasterTask* raster_task,
- const ImageDecodeTask::Vector& decode_tasks,
+ Task* raster_task,
+ const Task::Vector& decode_tasks,
size_t priority,
bool use_gpu_rasterization,
bool high_priority) {
@@ -188,9 +192,9 @@ void InsertNodesForRasterTask(TaskGraph* graph,
high_priority ? TASK_CATEGORY_FOREGROUND : TASK_CATEGORY_BACKGROUND;
// Insert image decode tasks.
- for (ImageDecodeTask::Vector::const_iterator it = decode_tasks.begin();
+ for (Task::Vector::const_iterator it = decode_tasks.begin();
it != decode_tasks.end(); ++it) {
- ImageDecodeTask* decode_task = it->get();
+ Task* decode_task = it->get();
// Skip if already decoded.
if (decode_task->HasCompleted())
@@ -227,7 +231,7 @@ void InsertNodesForRasterTask(TaskGraph* graph,
dependencies);
}
-class TaskSetFinishedTaskImpl : public TileTask {
+class TaskSetFinishedTaskImpl : public Task {
public:
explicit TaskSetFinishedTaskImpl(
base::SequencedTaskRunner* task_runner,
@@ -741,13 +745,12 @@ void TileManager::ScheduleTasks(
graph_.Reset();
- scoped_refptr<TileTask> required_for_activation_done_task =
+ scoped_refptr<Task> required_for_activation_done_task =
CreateTaskSetFinishedTask(
&TileManager::DidFinishRunningTileTasksRequiredForActivation);
- scoped_refptr<TileTask> required_for_draw_done_task =
- CreateTaskSetFinishedTask(
- &TileManager::DidFinishRunningTileTasksRequiredForDraw);
- scoped_refptr<TileTask> all_done_task =
+ scoped_refptr<Task> required_for_draw_done_task = CreateTaskSetFinishedTask(
+ &TileManager::DidFinishRunningTileTasksRequiredForDraw);
+ scoped_refptr<Task> all_done_task =
CreateTaskSetFinishedTask(&TileManager::DidFinishRunningAllTileTasks);
// Build a new task queue containing all task currently needed. Tasks
@@ -761,7 +764,7 @@ void TileManager::ScheduleTasks(
if (!tile->raster_task_)
tile->raster_task_ = CreateRasterTask(prioritized_tile);
- RasterTask* task = tile->raster_task_.get();
+ Task* task = tile->raster_task_.get();
DCHECK(!task->HasCompleted());
if (tile->required_for_activation()) {
@@ -827,7 +830,7 @@ void TileManager::ScheduleTasks(
ScheduledTasksStateAsValue());
}
-scoped_refptr<RasterTask> TileManager::CreateRasterTask(
+scoped_refptr<Task> TileManager::CreateRasterTask(
const PrioritizedTile& prioritized_tile) {
Tile* tile = prioritized_tile.tile();
@@ -854,7 +857,7 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask(
prioritized_tile.priority().resolution == LOW_RESOLUTION;
// Create and queue all image decode tasks that this tile depends on.
- ImageDecodeTask::Vector decode_tasks;
+ Task::Vector decode_tasks;
std::vector<DrawImage>& images = scheduled_draw_images_[tile->id()];
images.clear();
if (!playback_settings.skip_images) {
@@ -866,7 +869,7 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask(
// |playback_settings| here if |images| is empty.
for (auto it = images.begin(); it != images.end();) {
- scoped_refptr<ImageDecodeTask> task;
+ scoped_refptr<Task> task;
bool need_to_unref_when_finished =
image_decode_controller_->GetTaskForImageAndRef(
*it, prepare_tiles_count_, &task);
@@ -896,7 +899,7 @@ void TileManager::CheckAndProcessCompletedTasks() {
tile_task_worker_pool_->CollectCompletedTasks(&completed_tasks);
for (auto task : completed_tasks) {
- switch (task->GetTaskTypeId()) {
+ switch (task->GetTaskType()) {
case TASK_TYPE_IMAGE_DECODE:
image_decode_controller_->ImageDecodeTaskCompleted(task.get());
break;
@@ -906,9 +909,12 @@ void TileManager::CheckAndProcessCompletedTasks() {
case TASK_TYPE_RASTER:
RasterTaskCompleted(task.get());
break;
+ default:
+ // Do nothing for other types of tasks.
+ break;
}
- static_cast<TileTask*>(task.get())->DidComplete();
+ task->DidComplete();
}
completed_tasks.clear();
@@ -1166,7 +1172,7 @@ TileManager::ScheduledTasksStateAsValue() const {
// Utility function that can be used to create a "Task set finished" task that
// posts |callback| to |task_runner| when run.
-scoped_refptr<TileTask> TileManager::CreateTaskSetFinishedTask(
+scoped_refptr<Task> TileManager::CreateTaskSetFinishedTask(
void (TileManager::*callback)()) {
return make_scoped_refptr(new TaskSetFinishedTaskImpl(
task_runner_.get(),
« cc/raster/task_types.h ('K') | « cc/tiles/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698