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

Side by Side Diff: cc/resources/raster_worker_pool.cc

Issue 168083002: cc: Remove RasterWorkerPool::Task. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove RasterTaskQueueIterator Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « cc/resources/raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_delegate.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/resources/raster_worker_pool.h" 5 #include "cc/resources/raster_worker_pool.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/debug/trace_event_synthetic_delay.h" 9 #include "base/debug/trace_event_synthetic_delay.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 if (type != SkDrawFilter::kText_Type) 62 if (type != SkDrawFilter::kText_Type)
63 return true; 63 return true;
64 64
65 paint->setLCDRenderText(false); 65 paint->setLCDRenderText(false);
66 return true; 66 return true;
67 } 67 }
68 }; 68 };
69 69
70 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { 70 class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
71 public: 71 public:
72 RasterWorkerPoolTaskImpl(const Resource* resource, 72 RasterWorkerPoolTaskImpl(
73 PicturePileImpl* picture_pile, 73 const Resource* resource,
74 const gfx::Rect& content_rect, 74 PicturePileImpl* picture_pile,
75 float contents_scale, 75 const gfx::Rect& content_rect,
76 RasterMode raster_mode, 76 float contents_scale,
77 TileResolution tile_resolution, 77 RasterMode raster_mode,
78 int layer_id, 78 TileResolution tile_resolution,
79 const void* tile_id, 79 int layer_id,
80 int source_frame_number, 80 const void* tile_id,
81 RenderingStatsInstrumentation* rendering_stats, 81 int source_frame_number,
82 const RasterWorkerPool::RasterTask::Reply& reply, 82 RenderingStatsInstrumentation* rendering_stats,
83 internal::WorkerPoolTask::Vector* dependencies, 83 const base::Callback<void(const PicturePileImpl::Analysis&, bool)>& reply,
84 ContextProvider* context_provider) 84 internal::WorkerPoolTask::Vector* dependencies,
85 ContextProvider* context_provider)
85 : internal::RasterWorkerPoolTask(resource, dependencies), 86 : internal::RasterWorkerPoolTask(resource, dependencies),
86 picture_pile_(picture_pile), 87 picture_pile_(picture_pile),
87 content_rect_(content_rect), 88 content_rect_(content_rect),
88 contents_scale_(contents_scale), 89 contents_scale_(contents_scale),
89 raster_mode_(raster_mode), 90 raster_mode_(raster_mode),
90 tile_resolution_(tile_resolution), 91 tile_resolution_(tile_resolution),
91 layer_id_(layer_id), 92 layer_id_(layer_id),
92 tile_id_(tile_id), 93 tile_id_(tile_id),
93 source_frame_number_(source_frame_number), 94 source_frame_number_(source_frame_number),
94 rendering_stats_(rendering_stats), 95 rendering_stats_(rendering_stats),
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 PicturePileImpl::Analysis analysis_; 230 PicturePileImpl::Analysis analysis_;
230 scoped_refptr<PicturePileImpl> picture_pile_; 231 scoped_refptr<PicturePileImpl> picture_pile_;
231 gfx::Rect content_rect_; 232 gfx::Rect content_rect_;
232 float contents_scale_; 233 float contents_scale_;
233 RasterMode raster_mode_; 234 RasterMode raster_mode_;
234 TileResolution tile_resolution_; 235 TileResolution tile_resolution_;
235 int layer_id_; 236 int layer_id_;
236 const void* tile_id_; 237 const void* tile_id_;
237 int source_frame_number_; 238 int source_frame_number_;
238 RenderingStatsInstrumentation* rendering_stats_; 239 RenderingStatsInstrumentation* rendering_stats_;
239 const RasterWorkerPool::RasterTask::Reply reply_; 240 const base::Callback<void(const PicturePileImpl::Analysis&, bool)> reply_;
240 ContextProvider* context_provider_; 241 ContextProvider* context_provider_;
241 SkCanvas* canvas_; 242 SkCanvas* canvas_;
242 243
243 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl); 244 DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
244 }; 245 };
245 246
246 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 247 class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
247 public: 248 public:
248 ImageDecodeWorkerPoolTaskImpl(SkPixelRef* pixel_ref, 249 ImageDecodeWorkerPoolTaskImpl(
249 int layer_id, 250 SkPixelRef* pixel_ref,
250 RenderingStatsInstrumentation* rendering_stats, 251 int layer_id,
251 const RasterWorkerPool::Task::Reply& reply) 252 RenderingStatsInstrumentation* rendering_stats,
253 const base::Callback<void(bool was_canceled)>& reply)
252 : pixel_ref_(skia::SharePtr(pixel_ref)), 254 : pixel_ref_(skia::SharePtr(pixel_ref)),
253 layer_id_(layer_id), 255 layer_id_(layer_id),
254 rendering_stats_(rendering_stats), 256 rendering_stats_(rendering_stats),
255 reply_(reply) {} 257 reply_(reply) {}
256 258
257 // Overridden from internal::Task: 259 // Overridden from internal::Task:
258 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 260 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
259 TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnWorkerThread"); 261 TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnWorkerThread");
260 Decode(); 262 Decode();
261 } 263 }
(...skipping 21 matching lines...) Expand all
283 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( 285 devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
284 pixel_ref_.get()); 286 pixel_ref_.get());
285 // This will cause the image referred to by pixel ref to be decoded. 287 // This will cause the image referred to by pixel ref to be decoded.
286 pixel_ref_->lockPixels(); 288 pixel_ref_->lockPixels();
287 pixel_ref_->unlockPixels(); 289 pixel_ref_->unlockPixels();
288 } 290 }
289 291
290 skia::RefPtr<SkPixelRef> pixel_ref_; 292 skia::RefPtr<SkPixelRef> pixel_ref_;
291 int layer_id_; 293 int layer_id_;
292 RenderingStatsInstrumentation* rendering_stats_; 294 RenderingStatsInstrumentation* rendering_stats_;
293 const RasterWorkerPool::Task::Reply reply_; 295 const base::Callback<void(bool was_canceled)>& reply_;
294 296
295 DISALLOW_COPY_AND_ASSIGN(ImageDecodeWorkerPoolTaskImpl); 297 DISALLOW_COPY_AND_ASSIGN(ImageDecodeWorkerPoolTaskImpl);
296 }; 298 };
297 299
298 class RasterFinishedWorkerPoolTaskImpl : public internal::WorkerPoolTask { 300 class RasterFinishedWorkerPoolTaskImpl : public internal::WorkerPoolTask {
299 public: 301 public:
300 typedef base::Callback<void(const internal::WorkerPoolTask* source)> Callback; 302 typedef base::Callback<void(const internal::WorkerPoolTask* source)> Callback;
301 303
302 explicit RasterFinishedWorkerPoolTaskImpl( 304 explicit RasterFinishedWorkerPoolTaskImpl(
303 const Callback& on_raster_finished_callback) 305 const Callback& on_raster_finished_callback)
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 const Resource* resource, 442 const Resource* resource,
441 internal::WorkerPoolTask::Vector* dependencies) 443 internal::WorkerPoolTask::Vector* dependencies)
442 : resource_(resource) { 444 : resource_(resource) {
443 dependencies_.swap(*dependencies); 445 dependencies_.swap(*dependencies);
444 } 446 }
445 447
446 RasterWorkerPoolTask::~RasterWorkerPoolTask() {} 448 RasterWorkerPoolTask::~RasterWorkerPoolTask() {}
447 449
448 } // namespace internal 450 } // namespace internal
449 451
450 RasterWorkerPool::Task::Set::Set() {} 452 RasterTaskQueue::Item::Item(internal::RasterWorkerPoolTask* task,
453 bool required_for_activation)
454 : task(task), required_for_activation(required_for_activation) {}
451 455
452 RasterWorkerPool::Task::Set::~Set() {} 456 RasterTaskQueue::Item::~Item() {}
453 457
454 void RasterWorkerPool::Task::Set::Insert(const Task& task) { 458 RasterTaskQueue::RasterTaskQueue() : required_for_activation_count(0u) {}
455 DCHECK(!task.is_null()); 459
456 tasks_.push_back(task.internal_); 460 RasterTaskQueue::~RasterTaskQueue() {}
461
462 void RasterTaskQueue::Swap(RasterTaskQueue* other) {
463 items.swap(other->items);
464 std::swap(required_for_activation_count,
465 other->required_for_activation_count);
457 } 466 }
458 467
459 RasterWorkerPool::Task::Task() {} 468 void RasterTaskQueue::Reset() {
460 469 required_for_activation_count = 0u;
461 RasterWorkerPool::Task::Task(internal::WorkerPoolTask* internal) 470 items.clear();
462 : internal_(internal) {}
463
464 RasterWorkerPool::Task::~Task() {}
465
466 void RasterWorkerPool::Task::Reset() { internal_ = NULL; }
467
468 RasterWorkerPool::RasterTask::Queue::QueuedTask::QueuedTask(
469 internal::RasterWorkerPoolTask* task,
470 bool required_for_activation)
471 : task(task), required_for_activation(required_for_activation) {}
472
473 RasterWorkerPool::RasterTask::Queue::QueuedTask::~QueuedTask() {}
474
475 RasterWorkerPool::RasterTask::Queue::Queue()
476 : required_for_activation_count_(0u) {}
477
478 RasterWorkerPool::RasterTask::Queue::~Queue() {}
479
480 void RasterWorkerPool::RasterTask::Queue::Reset() {
481 tasks_.clear();
482 required_for_activation_count_ = 0u;
483 } 471 }
484 472
485 void RasterWorkerPool::RasterTask::Queue::Append(const RasterTask& task,
486 bool required_for_activation) {
487 DCHECK(!task.is_null());
488 tasks_.push_back(QueuedTask(task.internal_, required_for_activation));
489 required_for_activation_count_ += required_for_activation;
490 }
491
492 void RasterWorkerPool::RasterTask::Queue::Swap(Queue* other) {
493 tasks_.swap(other->tasks_);
494 std::swap(required_for_activation_count_,
495 other->required_for_activation_count_);
496 }
497
498 RasterWorkerPool::RasterTask::RasterTask() {}
499
500 RasterWorkerPool::RasterTask::RasterTask(
501 internal::RasterWorkerPoolTask* internal)
502 : internal_(internal) {}
503
504 void RasterWorkerPool::RasterTask::Reset() { internal_ = NULL; }
505
506 RasterWorkerPool::RasterTask::~RasterTask() {}
507
508 // This allows an external rasterize on-demand system to run raster tasks 473 // This allows an external rasterize on-demand system to run raster tasks
509 // with highest priority using the same task graph runner instance. 474 // with highest priority using the same task graph runner instance.
510 unsigned RasterWorkerPool::kOnDemandRasterTaskPriority = 0u; 475 unsigned RasterWorkerPool::kOnDemandRasterTaskPriority = 0u;
511 // Task priorities that make sure raster finished tasks run before any 476 // Task priorities that make sure raster finished tasks run before any
512 // remaining raster tasks. 477 // remaining raster tasks.
513 unsigned RasterWorkerPool::kRasterFinishedTaskPriority = 2u; 478 unsigned RasterWorkerPool::kRasterFinishedTaskPriority = 2u;
514 unsigned RasterWorkerPool::kRasterRequiredForActivationFinishedTaskPriority = 479 unsigned RasterWorkerPool::kRasterRequiredForActivationFinishedTaskPriority =
515 1u; 480 1u;
516 unsigned RasterWorkerPool::kRasterTaskPriorityBase = 3u; 481 unsigned RasterWorkerPool::kRasterTaskPriorityBase = 3u;
517 482
(...skipping 24 matching lines...) Expand all
542 507
543 return g_num_raster_threads; 508 return g_num_raster_threads;
544 } 509 }
545 510
546 // static 511 // static
547 internal::TaskGraphRunner* RasterWorkerPool::GetTaskGraphRunner() { 512 internal::TaskGraphRunner* RasterWorkerPool::GetTaskGraphRunner() {
548 return g_task_graph_runner.Pointer(); 513 return g_task_graph_runner.Pointer();
549 } 514 }
550 515
551 // static 516 // static
552 RasterWorkerPool::RasterTask RasterWorkerPool::CreateRasterTask( 517 scoped_refptr<internal::RasterWorkerPoolTask>
518 RasterWorkerPool::CreateRasterTask(
553 const Resource* resource, 519 const Resource* resource,
554 PicturePileImpl* picture_pile, 520 PicturePileImpl* picture_pile,
555 const gfx::Rect& content_rect, 521 const gfx::Rect& content_rect,
556 float contents_scale, 522 float contents_scale,
557 RasterMode raster_mode, 523 RasterMode raster_mode,
558 TileResolution tile_resolution, 524 TileResolution tile_resolution,
559 int layer_id, 525 int layer_id,
560 const void* tile_id, 526 const void* tile_id,
561 int source_frame_number, 527 int source_frame_number,
562 RenderingStatsInstrumentation* rendering_stats, 528 RenderingStatsInstrumentation* rendering_stats,
563 const RasterTask::Reply& reply, 529 const base::Callback<void(const PicturePileImpl::Analysis&, bool)>& reply,
564 Task::Set* dependencies, 530 internal::WorkerPoolTask::Vector* dependencies,
565 ContextProvider* context_provider) { 531 ContextProvider* context_provider) {
566 return RasterTask(new RasterWorkerPoolTaskImpl(resource, 532 return make_scoped_refptr(new RasterWorkerPoolTaskImpl(resource,
567 picture_pile, 533 picture_pile,
568 content_rect, 534 content_rect,
569 contents_scale, 535 contents_scale,
570 raster_mode, 536 raster_mode,
571 tile_resolution, 537 tile_resolution,
572 layer_id, 538 layer_id,
573 tile_id, 539 tile_id,
574 source_frame_number, 540 source_frame_number,
575 rendering_stats, 541 rendering_stats,
576 reply, 542 reply,
577 &dependencies->tasks_, 543 dependencies,
578 context_provider)); 544 context_provider));
579 } 545 }
580 546
581 // static 547 // static
582 RasterWorkerPool::Task RasterWorkerPool::CreateImageDecodeTask( 548 scoped_refptr<internal::WorkerPoolTask> RasterWorkerPool::CreateImageDecodeTask(
583 SkPixelRef* pixel_ref, 549 SkPixelRef* pixel_ref,
584 int layer_id, 550 int layer_id,
585 RenderingStatsInstrumentation* rendering_stats, 551 RenderingStatsInstrumentation* rendering_stats,
586 const Task::Reply& reply) { 552 const base::Callback<void(bool was_canceled)>& reply) {
587 return Task(new ImageDecodeWorkerPoolTaskImpl( 553 return make_scoped_refptr(new ImageDecodeWorkerPoolTaskImpl(
588 pixel_ref, layer_id, rendering_stats, reply)); 554 pixel_ref, layer_id, rendering_stats, reply));
589 } 555 }
590 556
591 void RasterWorkerPool::SetClient(RasterWorkerPoolClient* client) { 557 void RasterWorkerPool::SetClient(RasterWorkerPoolClient* client) {
592 client_ = client; 558 client_ = client;
593 } 559 }
594 560
595 void RasterWorkerPool::Shutdown() { 561 void RasterWorkerPool::Shutdown() {
596 TRACE_EVENT0("cc", "RasterWorkerPool::Shutdown"); 562 TRACE_EVENT0("cc", "RasterWorkerPool::Shutdown");
597 563
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 if (decode_it == graph->nodes.end()) 692 if (decode_it == graph->nodes.end())
727 InsertNodeForTask(graph, decode_task, priority, 0u); 693 InsertNodeForTask(graph, decode_task, priority, 0u);
728 694
729 graph->edges.push_back(internal::TaskGraph::Edge(decode_task, raster_task)); 695 graph->edges.push_back(internal::TaskGraph::Edge(decode_task, raster_task));
730 } 696 }
731 697
732 InsertNodeForTask(graph, raster_task, priority, dependencies); 698 InsertNodeForTask(graph, raster_task, priority, dependencies);
733 } 699 }
734 700
735 } // namespace cc 701 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/raster_worker_pool.h ('k') | cc/resources/raster_worker_pool_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698