Chromium Code Reviews| Index: components/native_viewport/onscreen_context_provider.cc |
| diff --git a/components/native_viewport/onscreen_context_provider.cc b/components/native_viewport/onscreen_context_provider.cc |
| index 7d6b5bfdd531c0bb5fd1995934d61e01043db94f..22935db7426d8d3cf04251352ee481c5f788de23 100644 |
| --- a/components/native_viewport/onscreen_context_provider.cc |
| +++ b/components/native_viewport/onscreen_context_provider.cc |
| @@ -4,6 +4,7 @@ |
| #include "components/native_viewport/onscreen_context_provider.h" |
| +#include "base/bind.h" |
| #include "components/gles2/command_buffer_driver.h" |
| #include "components/gles2/command_buffer_impl.h" |
| #include "components/gles2/gpu_state.h" |
| @@ -12,10 +13,14 @@ namespace native_viewport { |
| OnscreenContextProvider::OnscreenContextProvider( |
| const scoped_refptr<gles2::GpuState>& state) |
| - : state_(state), widget_(gfx::kNullAcceleratedWidget), binding_(this) { |
| + : state_(state), |
| + widget_(gfx::kNullAcceleratedWidget), |
| + binding_(this) { |
| } |
| OnscreenContextProvider::~OnscreenContextProvider() { |
| + for(const auto& driver : command_buffers_) |
|
Elliot Glaysher
2015/05/14 22:53:40
for (
jam
2015/05/15 02:15:31
Done.
|
| + driver->DestroyWindow(); |
| } |
| void OnscreenContextProvider::Bind( |
| @@ -45,14 +50,25 @@ void OnscreenContextProvider::Create( |
| void OnscreenContextProvider::CreateAndReturnCommandBuffer() { |
| mojo::CommandBufferPtr cb; |
| + scoped_ptr<gles2::CommandBufferDriver> command_buffer_driver( |
| + new gles2::CommandBufferDriver( |
| + widget_, state_->share_group(), state_->mailbox_manager(), |
| + state_->sync_point_manager(), |
| + base::Bind(&OnscreenContextProvider::CommandBufferDestroyed, |
| + base::Unretained(this)))); |
| + command_buffers_.insert(command_buffer_driver.get()); |
| + |
| new gles2::CommandBufferImpl( |
| GetProxy(&cb), pending_listener_.Pass(), state_->control_task_runner(), |
| state_->sync_point_manager(), |
| - make_scoped_ptr(new gles2::CommandBufferDriver( |
| - widget_, state_->share_group(), state_->mailbox_manager(), |
| - state_->sync_point_manager()))); |
| + command_buffer_driver.Pass()); |
| pending_create_callback_.Run(cb.Pass()); |
| pending_create_callback_.reset(); |
| } |
| +void OnscreenContextProvider::CommandBufferDestroyed( |
| + gles2::CommandBufferDriver* command_buffer) { |
| + command_buffers_.erase(command_buffer); |
| +} |
| + |
| } // namespace mojo |