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

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

Issue 140333006: cc: Move internal::Task::did_schedule_ to internal::WorkerPoolTask. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix cc_unittests 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/pixel_buffer_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool.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/pixel_buffer_raster_worker_pool.h" 5 #include "cc/resources/pixel_buffer_raster_worker_pool.h"
6 6
7 #include "base/containers/stack_container.h" 7 #include "base/containers/stack_container.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/debug/traced_value.h" 10 #include "cc/debug/traced_value.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 new_raster_task_states[task] = state; 126 new_raster_task_states[task] = state;
127 // |raster_tasks_required_for_activation_| contains all tasks that need to 127 // |raster_tasks_required_for_activation_| contains all tasks that need to
128 // complete before we can send a "ready to activate" signal. Tasks that 128 // complete before we can send a "ready to activate" signal. Tasks that
129 // have already completed should not be part of this set. 129 // have already completed should not be part of this set.
130 if (state != COMPLETED && IsRasterTaskRequiredForActivation(task)) 130 if (state != COMPLETED && IsRasterTaskRequiredForActivation(task))
131 raster_tasks_required_for_activation_.insert(task); 131 raster_tasks_required_for_activation_.insert(task);
132 132
133 raster_task_states_.erase(state_it); 133 raster_task_states_.erase(state_it);
134 } else { 134 } else {
135 DCHECK(!task->HasBeenScheduled());
135 new_raster_task_states[task] = UNSCHEDULED; 136 new_raster_task_states[task] = UNSCHEDULED;
136 if (IsRasterTaskRequiredForActivation(task)) 137 if (IsRasterTaskRequiredForActivation(task))
137 raster_tasks_required_for_activation_.insert(task); 138 raster_tasks_required_for_activation_.insert(task);
138 } 139 }
139 } 140 }
140 141
141 // Transfer old raster task state to |new_raster_task_states| and cancel all 142 // Transfer old raster task state to |new_raster_task_states| and cancel all
142 // remaining unscheduled tasks. 143 // remaining unscheduled tasks.
143 for (RasterTaskStateMap::iterator it = raster_task_states_.begin(); 144 for (RasterTaskStateMap::iterator it = raster_task_states_.begin();
144 it != raster_task_states_.end(); 145 it != raster_task_states_.end();
145 ++it) { 146 ++it) {
146 internal::RasterWorkerPoolTask* task = it->first; 147 internal::RasterWorkerPoolTask* task = it->first;
147 DCHECK(new_raster_task_states.find(task) == new_raster_task_states.end()); 148 DCHECK(new_raster_task_states.find(task) == new_raster_task_states.end());
148 DCHECK(!IsRasterTaskRequiredForActivation(task)); 149 DCHECK(!IsRasterTaskRequiredForActivation(task));
149 150
150 // Unscheduled task can be canceled. 151 // Unscheduled task can be canceled.
151 if (it->second == UNSCHEDULED) { 152 if (it->second == UNSCHEDULED) {
153 DCHECK(!task->HasBeenScheduled());
152 DCHECK(std::find(completed_raster_tasks_.begin(), 154 DCHECK(std::find(completed_raster_tasks_.begin(),
153 completed_raster_tasks_.end(), 155 completed_raster_tasks_.end(),
154 task) == completed_raster_tasks_.end()); 156 task) == completed_raster_tasks_.end());
155 completed_raster_tasks_.push_back(task); 157 completed_raster_tasks_.push_back(task);
156 new_raster_task_states[task] = COMPLETED; 158 new_raster_task_states[task] = COMPLETED;
157 continue; 159 continue;
158 } 160 }
159 161
160 // Move state to |new_raster_task_states|. 162 // Move state to |new_raster_task_states|.
161 new_raster_task_states[task] = it->second; 163 new_raster_task_states[task] = it->second;
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 // All raster tasks need to be throttled by bytes of pending uploads. 520 // All raster tasks need to be throttled by bytes of pending uploads.
519 size_t new_bytes_pending_upload = bytes_pending_upload; 521 size_t new_bytes_pending_upload = bytes_pending_upload;
520 new_bytes_pending_upload += task->resource()->bytes(); 522 new_bytes_pending_upload += task->resource()->bytes();
521 if (new_bytes_pending_upload > max_bytes_pending_upload_) { 523 if (new_bytes_pending_upload > max_bytes_pending_upload_) {
522 did_throttle_raster_tasks = true; 524 did_throttle_raster_tasks = true;
523 break; 525 break;
524 } 526 }
525 527
526 // If raster has finished, just update |bytes_pending_upload|. 528 // If raster has finished, just update |bytes_pending_upload|.
527 if (state_it->second == UPLOADING) { 529 if (state_it->second == UPLOADING) {
530 DCHECK(task->HasCompleted());
528 bytes_pending_upload = new_bytes_pending_upload; 531 bytes_pending_upload = new_bytes_pending_upload;
529 continue; 532 continue;
530 } 533 }
531 534
532 // Throttle raster tasks based on kMaxScheduledRasterTasks. 535 // Throttle raster tasks based on kMaxScheduledRasterTasks.
533 size_t scheduled_raster_task_count = 536 size_t scheduled_raster_task_count =
534 tasks[PREPAINT_TYPE].container().size() + 537 tasks[PREPAINT_TYPE].container().size() +
535 tasks[REQUIRED_FOR_ACTIVATION_TYPE].container().size(); 538 tasks[REQUIRED_FOR_ACTIVATION_TYPE].container().size();
536 if (scheduled_raster_task_count >= kMaxScheduledRasterTasks) { 539 if (scheduled_raster_task_count >= kMaxScheduledRasterTasks) {
537 did_throttle_raster_tasks = true; 540 did_throttle_raster_tasks = true;
538 break; 541 break;
539 } 542 }
540 543
541 // Update |bytes_pending_upload| now that task has cleared all 544 // Update |bytes_pending_upload| now that task has cleared all
542 // throttling limits. 545 // throttling limits.
543 bytes_pending_upload = new_bytes_pending_upload; 546 bytes_pending_upload = new_bytes_pending_upload;
544 547
545 RasterTaskType type = IsRasterTaskRequiredForActivation(task) 548 RasterTaskType type = IsRasterTaskRequiredForActivation(task)
546 ? REQUIRED_FOR_ACTIVATION_TYPE 549 ? REQUIRED_FOR_ACTIVATION_TYPE
547 : PREPAINT_TYPE; 550 : PREPAINT_TYPE;
548 551
549 task->ScheduleOnOriginThread(this);
550 DCHECK(state_it->second == UNSCHEDULED || state_it->second == SCHEDULED); 552 DCHECK(state_it->second == UNSCHEDULED || state_it->second == SCHEDULED);
551 state_it->second = SCHEDULED; 553 state_it->second = SCHEDULED;
552 554
553 tasks[type].container().push_back(CreateGraphNodeForRasterTask( 555 tasks[type].container().push_back(CreateGraphNodeForRasterTask(
554 task, task->dependencies(), priority++, &graph)); 556 task, task->dependencies(), priority++, &graph));
555 } 557 }
556 558
557 scoped_refptr<internal::WorkerPoolTask> 559 scoped_refptr<internal::WorkerPoolTask>
558 new_raster_required_for_activation_finished_task; 560 new_raster_required_for_activation_finished_task;
559 561
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 674
673 throttle_state->SetInteger("bytes_available_for_upload", 675 throttle_state->SetInteger("bytes_available_for_upload",
674 max_bytes_pending_upload_ - bytes_pending_upload_); 676 max_bytes_pending_upload_ - bytes_pending_upload_);
675 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_); 677 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_);
676 throttle_state->SetInteger("scheduled_raster_task_count", 678 throttle_state->SetInteger("scheduled_raster_task_count",
677 scheduled_raster_task_count_); 679 scheduled_raster_task_count_);
678 return throttle_state.PassAs<base::Value>(); 680 return throttle_state.PassAs<base::Value>();
679 } 681 }
680 682
681 } // namespace cc 683 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/pixel_buffer_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698