Index: content/common/gpu/client/gpu_channel_host.cc |
diff --git a/content/common/gpu/client/gpu_channel_host.cc b/content/common/gpu/client/gpu_channel_host.cc |
index b4460bbb56e3d1e999349bca9e972f756bc3612b..475eeb1541f6a4a4cb402ff7034055f17549f5ff 100644 |
--- a/content/common/gpu/client/gpu_channel_host.cc |
+++ b/content/common/gpu/client/gpu_channel_host.cc |
@@ -7,10 +7,9 @@ |
#include <algorithm> |
#include "base/bind.h" |
-#include "base/location.h" |
+#include "base/message_loop/message_loop.h" |
+#include "base/message_loop/message_loop_proxy.h" |
#include "base/posix/eintr_wrapper.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/thread_task_runner_handle.h" |
#include "base/threading/thread_restrictions.h" |
#include "base/trace_event/trace_event.h" |
#include "content/common/gpu/client/command_buffer_proxy_impl.h" |
@@ -23,6 +22,7 @@ |
#endif |
using base::AutoLock; |
+using base::MessageLoopProxy; |
namespace content { |
@@ -71,11 +71,13 @@ |
DCHECK(factory_->IsMainThread()); |
// Open a channel to the GPU process. We pass NULL as the main listener here |
// since we need to filter everything to route it to the right thread. |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = |
- factory_->GetIOThreadTaskRunner(); |
- channel_ = |
- IPC::SyncChannel::Create(channel_handle, IPC::Channel::MODE_CLIENT, NULL, |
- io_task_runner.get(), true, shutdown_event); |
+ scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy(); |
+ channel_ = IPC::SyncChannel::Create(channel_handle, |
+ IPC::Channel::MODE_CLIENT, |
+ NULL, |
+ io_loop.get(), |
+ true, |
+ shutdown_event); |
sync_filter_ = new IPC::SyncMessageFilter(shutdown_event); |
@@ -184,11 +186,14 @@ |
// then set up a new connection, and the GPU channel and any |
// view command buffers will all be associated with the same GPU |
// process. |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = |
- factory_->GetIOThreadTaskRunner(); |
- io_task_runner->PostTask( |
- FROM_HERE, base::Bind(&GpuChannelHost::MessageFilter::OnChannelError, |
- channel_filter_.get())); |
+ DCHECK(MessageLoopProxy::current().get()); |
+ |
+ scoped_refptr<base::MessageLoopProxy> io_loop = |
+ factory_->GetIOLoopProxy(); |
+ io_loop->PostTask( |
+ FROM_HERE, |
+ base::Bind(&GpuChannelHost::MessageFilter::OnChannelError, |
+ channel_filter_.get())); |
} |
return NULL; |
@@ -282,20 +287,20 @@ |
void GpuChannelHost::AddRoute( |
int route_id, base::WeakPtr<IPC::Listener> listener) { |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = |
- factory_->GetIOThreadTaskRunner(); |
- io_task_runner->PostTask(FROM_HERE, |
- base::Bind(&GpuChannelHost::MessageFilter::AddRoute, |
- channel_filter_.get(), route_id, listener, |
- base::ThreadTaskRunnerHandle::Get())); |
+ DCHECK(MessageLoopProxy::current().get()); |
+ |
+ scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy(); |
+ io_loop->PostTask(FROM_HERE, |
+ base::Bind(&GpuChannelHost::MessageFilter::AddRoute, |
+ channel_filter_.get(), route_id, listener, |
+ MessageLoopProxy::current())); |
} |
void GpuChannelHost::RemoveRoute(int route_id) { |
- scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = |
- factory_->GetIOThreadTaskRunner(); |
- io_task_runner->PostTask( |
- FROM_HERE, base::Bind(&GpuChannelHost::MessageFilter::RemoveRoute, |
- channel_filter_.get(), route_id)); |
+ scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy(); |
+ io_loop->PostTask(FROM_HERE, |
+ base::Bind(&GpuChannelHost::MessageFilter::RemoveRoute, |
+ channel_filter_.get(), route_id)); |
} |
base::SharedMemoryHandle GpuChannelHost::ShareToGpuProcess( |
@@ -382,12 +387,11 @@ |
void GpuChannelHost::MessageFilter::AddRoute( |
int route_id, |
base::WeakPtr<IPC::Listener> listener, |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) { |
+ scoped_refptr<MessageLoopProxy> loop) { |
DCHECK(listeners_.find(route_id) == listeners_.end()); |
- DCHECK(task_runner); |
GpuListenerInfo info; |
info.listener = listener; |
- info.task_runner = task_runner; |
+ info.loop = loop; |
listeners_[route_id] = info; |
} |
@@ -408,10 +412,12 @@ |
return false; |
const GpuListenerInfo& info = it->second; |
- info.task_runner->PostTask( |
+ info.loop->PostTask( |
FROM_HERE, |
- base::Bind(base::IgnoreResult(&IPC::Listener::OnMessageReceived), |
- info.listener, message)); |
+ base::Bind( |
+ base::IgnoreResult(&IPC::Listener::OnMessageReceived), |
+ info.listener, |
+ message)); |
return true; |
} |
@@ -430,8 +436,9 @@ |
it != listeners_.end(); |
it++) { |
const GpuListenerInfo& info = it->second; |
- info.task_runner->PostTask( |
- FROM_HERE, base::Bind(&IPC::Listener::OnChannelError, info.listener)); |
+ info.loop->PostTask( |
+ FROM_HERE, |
+ base::Bind(&IPC::Listener::OnChannelError, info.listener)); |
} |
listeners_.clear(); |