Index: content/browser/renderer_host/gpu_message_filter.cc |
diff --git a/content/browser/renderer_host/gpu_message_filter.cc b/content/browser/renderer_host/gpu_message_filter.cc |
index ca5647ee80ba80db9f281feac97cf46f0eb71362..ce028b6965221fd7487666a3e0cd59dc55020476 100644 |
--- a/content/browser/renderer_host/gpu_message_filter.cc |
+++ b/content/browser/renderer_host/gpu_message_filter.cc |
@@ -28,10 +28,8 @@ bool GpuMessageFilter::OnMessageReceived( |
bool* message_was_ok) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP_EX(GpuMessageFilter, message, *message_was_ok) |
- IPC_MESSAGE_HANDLER(GpuHostMsg_EstablishGpuChannel, |
- OnEstablishGpuChannel) |
- IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_SynchronizeGpu, |
- OnSynchronizeGpu) |
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_EstablishGpuChannel, |
+ OnEstablishGpuChannel) |
IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_CreateViewCommandBuffer, |
OnCreateViewCommandBuffer) |
IPC_MESSAGE_UNHANDLED(handled = false) |
@@ -51,8 +49,10 @@ class EstablishChannelCallback |
base::ProcessHandle, |
const GPUInfo&> > { |
public: |
- explicit EstablishChannelCallback(GpuMessageFilter* filter): |
- filter_(filter->AsWeakPtr()) { |
+ explicit EstablishChannelCallback(GpuMessageFilter* filter, |
+ IPC::Message* reply) : |
+ filter_(filter->AsWeakPtr()), |
+ reply_(reply) { |
} |
virtual void RunWithParams(const TupleType& params) { |
@@ -84,35 +84,11 @@ class EstablishChannelCallback |
renderer_process_for_gpu = 0; |
} |
- IPC::Message* reply = new GpuMsg_GpuChannelEstablished( |
- channel, renderer_process_for_gpu, gpu_info); |
- |
- // If the renderer process is performing synchronous initialization, |
- // it needs to handle this message before receiving the reply for |
- // the synchronous GpuHostMsg_SynchronizeGpu message. |
- reply->set_unblock(true); |
- |
- filter_->Send(reply); |
- } |
- |
- private: |
- base::WeakPtr<GpuMessageFilter> filter_; |
-}; |
- |
-class SynchronizeCallback : public CallbackRunner<Tuple0> { |
- public: |
- SynchronizeCallback(GpuMessageFilter* filter, IPC::Message* reply): |
- filter_(filter->AsWeakPtr()), |
- reply_(reply) { |
- } |
- |
- virtual void RunWithParams(const TupleType& params) { |
- DispatchToMethod(this, &SynchronizeCallback::Send, params); |
- } |
- |
- void Send() { |
- if (filter_) |
- filter_->Send(reply_); |
+ GpuHostMsg_EstablishGpuChannel::WriteReplyParams(reply_, |
+ channel, |
+ renderer_process_for_gpu, |
+ gpu_info); |
+ filter_->Send(reply_); |
} |
private: |
@@ -148,9 +124,10 @@ class CreateCommandBufferCallback : public CallbackRunner<Tuple1<int32> > { |
} // namespace |
void GpuMessageFilter::OnEstablishGpuChannel( |
- content::CauseForGpuLaunch cause_for_gpu_launch) { |
+ content::CauseForGpuLaunch cause_for_gpu_launch, |
+ IPC::Message* reply) { |
scoped_ptr<EstablishChannelCallback> callback( |
- new EstablishChannelCallback(this)); |
+ new EstablishChannelCallback(this, reply)); |
// TODO(apatrick): Eventually, this will return the route ID of a |
// GpuProcessStub, from which the renderer process will create a |
@@ -164,9 +141,8 @@ void GpuMessageFilter::OnEstablishGpuChannel( |
host = GpuProcessHost::GetForRenderer( |
render_process_id_, cause_for_gpu_launch); |
if (!host) { |
- callback->Run(IPC::ChannelHandle(), |
- static_cast<base::ProcessHandle>(NULL), |
- GPUInfo()); |
+ reply->set_reply_error(); |
+ Send(reply); |
return; |
} |
@@ -176,20 +152,6 @@ void GpuMessageFilter::OnEstablishGpuChannel( |
host->EstablishGpuChannel(render_process_id_, callback.release()); |
} |
-void GpuMessageFilter::OnSynchronizeGpu(IPC::Message* reply) { |
- GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_); |
- if (!host) { |
- // TODO(apatrick): Eventually, this IPC message will be routed to a |
- // GpuProcessStub with a particular routing ID. The error will be set if |
- // the GpuProcessStub with that routing ID is not in the MessageRouter. |
- reply->set_reply_error(); |
- Send(reply); |
- return; |
- } |
- |
- host->Synchronize(new SynchronizeCallback(this, reply)); |
-} |
- |
void GpuMessageFilter::OnCreateViewCommandBuffer( |
gfx::PluginWindowHandle compositing_surface, |
int32 render_view_id, |