| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/common/gpu/client/gpu_channel_host.h" | 5 #include "content/common/gpu/client/gpu_channel_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 | 225 |
| 226 int route_id = command_buffer->GetRouteID(); | 226 int route_id = command_buffer->GetRouteID(); |
| 227 Send(new GpuChannelMsg_DestroyCommandBuffer(route_id)); | 227 Send(new GpuChannelMsg_DestroyCommandBuffer(route_id)); |
| 228 RemoveRoute(route_id); | 228 RemoveRoute(route_id); |
| 229 | 229 |
| 230 AutoLock lock(context_lock_); | 230 AutoLock lock(context_lock_); |
| 231 proxies_.erase(route_id); | 231 proxies_.erase(route_id); |
| 232 delete command_buffer; | 232 delete command_buffer; |
| 233 } | 233 } |
| 234 | 234 |
| 235 void GpuChannelHost::DestroyChannel() { |
| 236 // channel_ must be destroyed on the main thread. |
| 237 if (channel_.get() && !factory_->IsMainThread()) |
| 238 factory_->GetMainLoop()->DeleteSoon(FROM_HERE, channel_.release()); |
| 239 channel_.reset(); |
| 240 } |
| 241 |
| 235 void GpuChannelHost::AddRoute( | 242 void GpuChannelHost::AddRoute( |
| 236 int route_id, base::WeakPtr<IPC::Listener> listener) { | 243 int route_id, base::WeakPtr<IPC::Listener> listener) { |
| 237 DCHECK(MessageLoopProxy::current().get()); | 244 DCHECK(MessageLoopProxy::current().get()); |
| 238 | 245 |
| 239 scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy(); | 246 scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy(); |
| 240 io_loop->PostTask(FROM_HERE, | 247 io_loop->PostTask(FROM_HERE, |
| 241 base::Bind(&GpuChannelHost::MessageFilter::AddRoute, | 248 base::Bind(&GpuChannelHost::MessageFilter::AddRoute, |
| 242 channel_filter_.get(), route_id, listener, | 249 channel_filter_.get(), route_id, listener, |
| 243 MessageLoopProxy::current())); | 250 MessageLoopProxy::current())); |
| 244 } | 251 } |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 | 311 |
| 305 int32 GpuChannelHost::ReserveImageId() { | 312 int32 GpuChannelHost::ReserveImageId() { |
| 306 return next_image_id_.GetNext(); | 313 return next_image_id_.GetNext(); |
| 307 } | 314 } |
| 308 | 315 |
| 309 int32 GpuChannelHost::GenerateRouteID() { | 316 int32 GpuChannelHost::GenerateRouteID() { |
| 310 return next_route_id_.GetNext(); | 317 return next_route_id_.GetNext(); |
| 311 } | 318 } |
| 312 | 319 |
| 313 GpuChannelHost::~GpuChannelHost() { | 320 GpuChannelHost::~GpuChannelHost() { |
| 314 // channel_ must be destroyed on the main thread. | 321 DestroyChannel(); |
| 315 if (!factory_->IsMainThread()) | |
| 316 factory_->GetMainLoop()->DeleteSoon(FROM_HERE, channel_.release()); | |
| 317 } | 322 } |
| 318 | 323 |
| 319 | |
| 320 GpuChannelHost::MessageFilter::MessageFilter() | 324 GpuChannelHost::MessageFilter::MessageFilter() |
| 321 : lost_(false) { | 325 : lost_(false) { |
| 322 } | 326 } |
| 323 | 327 |
| 324 GpuChannelHost::MessageFilter::~MessageFilter() {} | 328 GpuChannelHost::MessageFilter::~MessageFilter() {} |
| 325 | 329 |
| 326 void GpuChannelHost::MessageFilter::AddRoute( | 330 void GpuChannelHost::MessageFilter::AddRoute( |
| 327 int route_id, | 331 int route_id, |
| 328 base::WeakPtr<IPC::Listener> listener, | 332 base::WeakPtr<IPC::Listener> listener, |
| 329 scoped_refptr<MessageLoopProxy> loop) { | 333 scoped_refptr<MessageLoopProxy> loop) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 | 386 |
| 383 listeners_.clear(); | 387 listeners_.clear(); |
| 384 } | 388 } |
| 385 | 389 |
| 386 bool GpuChannelHost::MessageFilter::IsLost() const { | 390 bool GpuChannelHost::MessageFilter::IsLost() const { |
| 387 AutoLock lock(lock_); | 391 AutoLock lock(lock_); |
| 388 return lost_; | 392 return lost_; |
| 389 } | 393 } |
| 390 | 394 |
| 391 } // namespace content | 395 } // namespace content |
| OLD | NEW |