Index: content/renderer/scheduler/task_queue_manager.cc |
diff --git a/content/renderer/scheduler/task_queue_manager.cc b/content/renderer/scheduler/task_queue_manager.cc |
index eed64494175b782cb816212a84c357f50fcae7e9..515264bac2ad8f32adfedd7a4aeb308e78f74329 100644 |
--- a/content/renderer/scheduler/task_queue_manager.cc |
+++ b/content/renderer/scheduler/task_queue_manager.cc |
@@ -245,6 +245,7 @@ TaskQueueManager::TaskQueueManager( |
: main_task_runner_(main_task_runner), |
selector_(selector), |
pending_dowork_count_(0), |
+ work_batch_size_(1), |
weak_factory_(this) { |
DCHECK(main_task_runner->RunsTasksOnCurrentThread()); |
TRACE_EVENT_OBJECT_CREATED_WITH_ID( |
@@ -332,14 +333,18 @@ void TaskQueueManager::DoWork(bool posted_from_main_thread) { |
DCHECK_GE(pending_dowork_count_, 0); |
} |
main_thread_checker_.CalledOnValidThread(); |
- if (!UpdateWorkQueues()) |
- return; |
- size_t queue_index; |
- if (!SelectWorkQueueToService(&queue_index)) |
- return; |
- MaybePostDoWorkOnMainRunner(); |
- ProcessTaskFromWorkQueue(queue_index); |
+ for (int i = 0; i < work_batch_size_; i++) { |
+ if (!UpdateWorkQueues()) |
+ return; |
+ |
+ size_t queue_index; |
+ if (!SelectWorkQueueToService(&queue_index)) |
+ return; |
+ if (i == 0) |
+ MaybePostDoWorkOnMainRunner(); |
+ ProcessTaskFromWorkQueue(queue_index); |
+ } |
rmcilroy
2015/01/14 17:56:37
Would the following work:
if (!UpdateWorkQueues()
Sami
2015/01/14 18:11:49
I had the same idea and chose to do polling inside
rmcilroy
2015/01/14 19:34:48
Good point
|
} |
bool TaskQueueManager::SelectWorkQueueToService(size_t* out_queue_index) { |
@@ -388,6 +393,12 @@ void TaskQueueManager::SetQueueName(size_t queue_index, const char* name) { |
queue->set_name(name); |
} |
+void TaskQueueManager::SetWorkBatchSize(int work_batch_size) { |
+ main_thread_checker_.CalledOnValidThread(); |
+ DCHECK_GE(work_batch_size, 1); |
+ work_batch_size_ = work_batch_size; |
+} |
+ |
scoped_refptr<base::debug::ConvertableToTraceFormat> |
TaskQueueManager::AsValueWithSelectorResult(bool should_run, |
size_t selected_queue) const { |