| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/gpu_process_host.h" | 5 #include "chrome/browser/gpu_process_host.h" |
| 6 | 6 |
| 7 #include "app/app_switches.h" | 7 #include "app/app_switches.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 | 125 |
| 126 bool GpuProcessHost::Send(IPC::Message* msg) { | 126 bool GpuProcessHost::Send(IPC::Message* msg) { |
| 127 DCHECK(CalledOnValidThread()); | 127 DCHECK(CalledOnValidThread()); |
| 128 | 128 |
| 129 if (!EnsureInitialized()) | 129 if (!EnsureInitialized()) |
| 130 return false; | 130 return false; |
| 131 | 131 |
| 132 return BrowserChildProcessHost::Send(msg); | 132 return BrowserChildProcessHost::Send(msg); |
| 133 } | 133 } |
| 134 | 134 |
| 135 void GpuProcessHost::OnMessageReceived(const IPC::Message& message) { | 135 bool GpuProcessHost::OnMessageReceived(const IPC::Message& message) { |
| 136 DCHECK(CalledOnValidThread()); | 136 DCHECK(CalledOnValidThread()); |
| 137 | 137 |
| 138 if (message.routing_id() == MSG_ROUTING_CONTROL) | 138 if (message.routing_id() == MSG_ROUTING_CONTROL) |
| 139 OnControlMessageReceived(message); | 139 return OnControlMessageReceived(message); |
| 140 else | 140 |
| 141 RouteOnUIThread(message); | 141 RouteOnUIThread(message); |
| 142 return true; |
| 142 } | 143 } |
| 143 | 144 |
| 144 void GpuProcessHost::EstablishGpuChannel(int renderer_id, | 145 void GpuProcessHost::EstablishGpuChannel(int renderer_id, |
| 145 RenderMessageFilter* filter) { | 146 RenderMessageFilter* filter) { |
| 146 DCHECK(CalledOnValidThread()); | 147 DCHECK(CalledOnValidThread()); |
| 147 | 148 |
| 148 if (Send(new GpuMsg_EstablishChannel(renderer_id))) { | 149 if (Send(new GpuMsg_EstablishChannel(renderer_id))) { |
| 149 sent_requests_.push(ChannelRequest(filter)); | 150 sent_requests_.push(ChannelRequest(filter)); |
| 150 } else { | 151 } else { |
| 151 SendEstablishChannelReply(IPC::ChannelHandle(), GPUInfo(), filter); | 152 SendEstablishChannelReply(IPC::ChannelHandle(), GPUInfo(), filter); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 171 | 172 |
| 172 GpuProcessHost::SynchronizationRequest::SynchronizationRequest( | 173 GpuProcessHost::SynchronizationRequest::SynchronizationRequest( |
| 173 IPC::Message* reply, | 174 IPC::Message* reply, |
| 174 RenderMessageFilter* filter) | 175 RenderMessageFilter* filter) |
| 175 : reply(reply), | 176 : reply(reply), |
| 176 filter(filter) { | 177 filter(filter) { |
| 177 } | 178 } |
| 178 | 179 |
| 179 GpuProcessHost::SynchronizationRequest::~SynchronizationRequest() {} | 180 GpuProcessHost::SynchronizationRequest::~SynchronizationRequest() {} |
| 180 | 181 |
| 181 void GpuProcessHost::OnControlMessageReceived(const IPC::Message& message) { | 182 bool GpuProcessHost::OnControlMessageReceived(const IPC::Message& message) { |
| 182 DCHECK(CalledOnValidThread()); | 183 DCHECK(CalledOnValidThread()); |
| 183 | 184 |
| 184 IPC_BEGIN_MESSAGE_MAP(GpuProcessHost, message) | 185 IPC_BEGIN_MESSAGE_MAP(GpuProcessHost, message) |
| 185 IPC_MESSAGE_HANDLER(GpuHostMsg_ChannelEstablished, OnChannelEstablished) | 186 IPC_MESSAGE_HANDLER(GpuHostMsg_ChannelEstablished, OnChannelEstablished) |
| 186 IPC_MESSAGE_HANDLER(GpuHostMsg_SynchronizeReply, OnSynchronizeReply) | 187 IPC_MESSAGE_HANDLER(GpuHostMsg_SynchronizeReply, OnSynchronizeReply) |
| 187 #if defined(OS_LINUX) | 188 #if defined(OS_LINUX) |
| 188 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID) | 189 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetViewXID, OnGetViewXID) |
| 189 IPC_MESSAGE_HANDLER(GpuHostMsg_ReleaseXID, OnReleaseXID) | 190 IPC_MESSAGE_HANDLER(GpuHostMsg_ReleaseXID, OnReleaseXID) |
| 190 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_ResizeXID, OnResizeXID) | 191 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_ResizeXID, OnResizeXID) |
| 191 #elif defined(OS_MACOSX) | 192 #elif defined(OS_MACOSX) |
| 192 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface, | 193 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSetIOSurface, |
| 193 OnAcceleratedSurfaceSetIOSurface) | 194 OnAcceleratedSurfaceSetIOSurface) |
| 194 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, | 195 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, |
| 195 OnAcceleratedSurfaceBuffersSwapped) | 196 OnAcceleratedSurfaceBuffersSwapped) |
| 196 #elif defined(OS_WIN) | 197 #elif defined(OS_WIN) |
| 197 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetCompositorHostWindow, | 198 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuHostMsg_GetCompositorHostWindow, |
| 198 OnGetCompositorHostWindow) | 199 OnGetCompositorHostWindow) |
| 199 #endif | 200 #endif |
| 200 // If the IO thread does not handle the message then automatically route it | 201 // If the IO thread does not handle the message then automatically route it |
| 201 // to the UI thread. The UI thread will report an error if it does not | 202 // to the UI thread. The UI thread will report an error if it does not |
| 202 // handle it. | 203 // handle it. |
| 203 IPC_MESSAGE_UNHANDLED(RouteOnUIThread(message)) | 204 IPC_MESSAGE_UNHANDLED(RouteOnUIThread(message)) |
| 204 IPC_END_MESSAGE_MAP() | 205 IPC_END_MESSAGE_MAP() |
| 206 |
| 207 return true; |
| 205 } | 208 } |
| 206 | 209 |
| 207 void GpuProcessHost::OnChannelEstablished( | 210 void GpuProcessHost::OnChannelEstablished( |
| 208 const IPC::ChannelHandle& channel_handle, | 211 const IPC::ChannelHandle& channel_handle, |
| 209 const GPUInfo& gpu_info) { | 212 const GPUInfo& gpu_info) { |
| 210 GpuFeatureFlags gpu_feature_flags; | 213 GpuFeatureFlags gpu_feature_flags; |
| 211 if (channel_handle.name.size() != 0) { | 214 if (channel_handle.name.size() != 0) { |
| 212 gpu_feature_flags = gpu_blacklist_->DetermineGpuFeatureFlags( | 215 gpu_feature_flags = gpu_blacklist_->DetermineGpuFeatureFlags( |
| 213 GpuBlacklist::kOsAny, NULL, gpu_info); | 216 GpuBlacklist::kOsAny, NULL, gpu_info); |
| 214 } | 217 } |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); | 564 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); |
| 562 if (browser_command_line.HasSwitch(switches::kIgnoreGpuBlacklist) || | 565 if (browser_command_line.HasSwitch(switches::kIgnoreGpuBlacklist) || |
| 563 blacklist->LoadGpuBlacklist(gpu_blacklist_json.as_string(), true)) { | 566 blacklist->LoadGpuBlacklist(gpu_blacklist_json.as_string(), true)) { |
| 564 gpu_blacklist_.reset(blacklist); | 567 gpu_blacklist_.reset(blacklist); |
| 565 return true; | 568 return true; |
| 566 } | 569 } |
| 567 delete blacklist; | 570 delete blacklist; |
| 568 return false; | 571 return false; |
| 569 } | 572 } |
| 570 | 573 |
| OLD | NEW |