Chromium Code Reviews| Index: content/child/blink_platform_impl.cc |
| diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc |
| index ca621267cf83df6204699d1f2ef338b7ebf54f5c..1f05b21b957eced95221f949f14dfb31bb5a12e4 100644 |
| --- a/content/child/blink_platform_impl.cc |
| +++ b/content/child/blink_platform_impl.cc |
| @@ -25,6 +25,7 @@ |
| #include "base/sys_info.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/threading/platform_thread.h" |
| +#include "base/threading/thread.h" |
| #include "base/time/time.h" |
| #include "base/trace_event/memory_allocator_dump_guid.h" |
| #include "base/trace_event/memory_dump_manager.h" |
| @@ -442,7 +443,8 @@ BlinkPlatformImpl::BlinkPlatformImpl() |
| BlinkPlatformImpl::BlinkPlatformImpl( |
| scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner) |
| - : main_thread_task_runner_(main_thread_task_runner) { |
| + : main_thread_task_runner_(main_thread_task_runner), |
| + compositor_thread_(nullptr) { |
| InternalInit(); |
| } |
| @@ -529,14 +531,30 @@ bool BlinkPlatformImpl::portAllowed(const blink::WebURL& url) const { |
| } |
| blink::WebThread* BlinkPlatformImpl::createThread(const char* name) { |
| + base::Thread::Options options; |
| scheduler::WebThreadImplForWorkerScheduler* thread = |
| - new scheduler::WebThreadImplForWorkerScheduler(name); |
| + new scheduler::WebThreadImplForWorkerScheduler(name, options); |
| thread->TaskRunner()->PostTask( |
| FROM_HERE, base::Bind(&BlinkPlatformImpl::UpdateWebThreadTLS, |
| base::Unretained(this), thread)); |
| return thread; |
| } |
| +blink::WebThread* BlinkPlatformImpl::createThreadForCompositor( |
| + const char* name) { |
| + base::Thread::Options options; |
| + DCHECK(!compositor_thread_); |
| +#if defined(OS_ANDROID) |
| + options.priority = base::ThreadPriority::DISPLAY; |
| +#endif |
| + compositor_thread_ = |
| + new scheduler::WebThreadImplForWorkerScheduler(name, options); |
|
piman
2015/11/30 21:41:45
I think this makes ownership muddy and confusing.
Ian Vollick
2015/12/01 04:00:04
Agree that this is crummy, but I think there's som
piman
2015/12/01 04:24:10
Unretained(this) is still fine if BlinkPlatformImp
Ian Vollick
2015/12/01 05:01:08
I think I've got a plan, but before describing it
|
| + compositor_thread_->TaskRunner()->PostTask( |
| + FROM_HERE, base::Bind(&BlinkPlatformImpl::UpdateWebThreadTLS, |
| + base::Unretained(this), compositor_thread_)); |
| + return compositor_thread_; |
| +} |
| + |
| blink::WebThread* BlinkPlatformImpl::currentThread() { |
| return static_cast<blink::WebThread*>(current_thread_slot_.Get()); |
| } |
| @@ -1089,6 +1107,10 @@ void BlinkPlatformImpl::cryptographicallyRandomValues( |
| base::RandBytes(buffer, length); |
| } |
| +blink::WebThread* BlinkPlatformImpl::compositorThread() const { |
| + return compositor_thread_; |
| +} |
| + |
| blink::WebGestureCurve* BlinkPlatformImpl::createFlingAnimationCurve( |
| blink::WebGestureDevice device_source, |
| const blink::WebFloatPoint& velocity, |