Index: content/child/blink_platform_impl.cc |
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc |
index 75ac1489d92152578b6eb70a33921fcf3ad52010..68c748fcbc6e67e9c049d90edf06c632c0eb0e33 100644 |
--- a/content/child/blink_platform_impl.cc |
+++ b/content/child/blink_platform_impl.cc |
@@ -37,6 +37,7 @@ |
#include "components/mime_util/mime_util.h" |
#include "components/scheduler/child/web_task_runner_impl.h" |
#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" |
+#include "components/scheduler/child/worker_scheduler.h" |
#include "content/app/resources/grit/content_resources.h" |
#include "content/app/strings/grit/content_strings.h" |
#include "content/child/background_sync/background_sync_provider.h" |
@@ -89,6 +90,43 @@ namespace content { |
namespace { |
+class CompositorWorkerScheduler : public scheduler::WorkerScheduler { |
Sami
2016/01/14 13:55:05
Would you mind putting this to components/schedule
sadrul
2016/01/14 15:20:40
Done (moved to */child/* instead of in */renderer/
|
+ public: |
+ explicit CompositorWorkerScheduler(base::Thread* thread) : thread_(thread) {} |
+ ~CompositorWorkerScheduler() override {} |
+ |
+ // WorkerScheduler: |
+ scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override { |
+ return thread_->task_runner(); |
Sami
2016/01/14 13:55:05
If we do decide to land this pass through schedule
sadrul
2016/01/14 15:20:40
Done.
|
+ } |
+ |
+ scoped_refptr<scheduler::SingleThreadIdleTaskRunner> IdleTaskRunner() |
+ override { |
+ return nullptr; |
Sami
2016/01/14 13:55:05
Presumably the compositor worker will need to do s
sadrul
2016/01/14 15:20:40
Done.
|
+ } |
+ |
+ bool CanExceedIdleDeadlineIfRequired() const override { return false; } |
+ |
+ bool ShouldYieldForHighPriorityWork() override { return false; } |
+ |
+ void AddTaskObserver( |
+ base::MessageLoop::TaskObserver* task_observer) override { |
+ thread_->message_loop()->AddTaskObserver(task_observer); |
+ } |
+ |
+ void RemoveTaskObserver( |
+ base::MessageLoop::TaskObserver* task_observer) override { |
+ thread_->message_loop()->RemoveTaskObserver(task_observer); |
+ } |
+ |
+ void Init() override {} |
+ void Shutdown() override {} |
+ |
+ private: |
+ base::Thread* thread_; |
+ DISALLOW_COPY_AND_ASSIGN(CompositorWorkerScheduler); |
+}; |
+ |
class WebThreadForCompositor : public WebThreadImplForWorkerScheduler { |
public: |
explicit WebThreadForCompositor(base::Thread::Options options) |
@@ -99,7 +137,9 @@ class WebThreadForCompositor : public WebThreadImplForWorkerScheduler { |
private: |
// WebThreadImplForWorkerScheduler: |
- bool UseThreadTaskRunnerAsDefault() const override { return true; } |
+ scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override { |
+ return make_scoped_ptr(new CompositorWorkerScheduler(thread())); |
+ } |
DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor); |
}; |