| Index: content/child/blink_platform_impl.cc
|
| diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc
|
| index 75b40d2174aa53c8e272bf5365d7ea80441b9e56..42f6052066d8f73be0ac433829d1f6bb1149d5e3 100644
|
| --- a/content/child/blink_platform_impl.cc
|
| +++ b/content/child/blink_platform_impl.cc
|
| @@ -83,6 +83,7 @@ using blink::WebThemeEngine;
|
| using blink::WebURL;
|
| using blink::WebURLError;
|
| using blink::WebURLLoader;
|
| +using scheduler::WebThreadImplForWorkerScheduler;
|
|
|
| namespace content {
|
|
|
| @@ -482,6 +483,16 @@ void BlinkPlatformImpl::InternalInit() {
|
| }
|
| }
|
|
|
| +void BlinkPlatformImpl::WaitUntilWebThreadTLSUpdate(
|
| + scheduler::WebThreadBase* thread) {
|
| + base::WaitableEvent event(false, false);
|
| + thread->TaskRunner()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&BlinkPlatformImpl::UpdateWebThreadTLS, base::Unretained(this),
|
| + base::Unretained(thread), base::Unretained(&event)));
|
| + event.Wait();
|
| +}
|
| +
|
| void BlinkPlatformImpl::UpdateWebThreadTLS(blink::WebThread* thread,
|
| base::WaitableEvent* event) {
|
| DCHECK(!current_thread_slot_.Get());
|
| @@ -551,21 +562,18 @@ bool BlinkPlatformImpl::portAllowed(const blink::WebURL& url) const {
|
| }
|
|
|
| blink::WebThread* BlinkPlatformImpl::createThread(const char* name) {
|
| - return createThreadWithOptions(name, base::Thread::Options()).release();
|
| -}
|
| -
|
| -scoped_ptr<scheduler::WebThreadBase> BlinkPlatformImpl::createThreadWithOptions(
|
| - const char* name,
|
| - base::Thread::Options options) {
|
| - scoped_ptr<scheduler::WebThreadBase> thread(
|
| - new scheduler::WebThreadImplForWorkerScheduler(name, options));
|
| - base::WaitableEvent event(false, false);
|
| - thread->TaskRunner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&BlinkPlatformImpl::UpdateWebThreadTLS, base::Unretained(this),
|
| - base::Unretained(thread.get()), base::Unretained(&event)));
|
| - event.Wait();
|
| - return thread;
|
| + scoped_ptr<WebThreadImplForWorkerScheduler> thread(
|
| + new WebThreadImplForWorkerScheduler(name));
|
| + thread->Init();
|
| + WaitUntilWebThreadTLSUpdate(thread.get());
|
| + return thread.release();
|
| +}
|
| +
|
| +void BlinkPlatformImpl::SetCompositorThread(
|
| + scheduler::WebThreadBase* compositor_thread) {
|
| + compositor_thread_ = compositor_thread;
|
| + if (compositor_thread_)
|
| + WaitUntilWebThreadTLSUpdate(compositor_thread_);
|
| }
|
|
|
| blink::WebThread* BlinkPlatformImpl::currentThread() {
|
|
|