| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "services/gles2/command_buffer_impl.h" | 5 #include "services/gles2/command_buffer_impl.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 9 #include "gpu/command_buffer/service/sync_point_manager.h" | 11 #include "gpu/command_buffer/service/sync_point_manager.h" |
| 10 #include "services/gles2/command_buffer_driver.h" | 12 #include "services/gles2/command_buffer_driver.h" |
| 11 | 13 |
| 12 namespace gles2 { | 14 namespace gles2 { |
| 13 namespace { | 15 namespace { |
| 14 void DestroyDriver(scoped_ptr<CommandBufferDriver> driver) { | 16 void DestroyDriver(scoped_ptr<CommandBufferDriver> driver) { |
| 15 // Just let ~scoped_ptr run. | 17 // Just let ~scoped_ptr run. |
| 16 } | 18 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 35 command_buffer_, timebase, interval)); | 37 command_buffer_, timebase, interval)); |
| 36 } | 38 } |
| 37 | 39 |
| 38 void DidLoseContext() override { | 40 void DidLoseContext() override { |
| 39 command_buffer_->DidLoseContext(); | 41 command_buffer_->DidLoseContext(); |
| 40 } | 42 } |
| 41 | 43 |
| 42 base::WeakPtr<CommandBufferImpl> command_buffer_; | 44 base::WeakPtr<CommandBufferImpl> command_buffer_; |
| 43 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_; | 45 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_; |
| 44 }; | 46 }; |
| 45 } | 47 } // namespace |
| 46 | 48 |
| 47 CommandBufferImpl::CommandBufferImpl( | 49 CommandBufferImpl::CommandBufferImpl( |
| 48 mojo::InterfaceRequest<mojo::CommandBuffer> request, | 50 mojo::InterfaceRequest<mojo::CommandBuffer> request, |
| 49 mojo::ViewportParameterListenerPtr listener, | 51 mojo::ViewportParameterListenerPtr listener, |
| 50 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner, | 52 scoped_refptr<base::SingleThreadTaskRunner> control_task_runner, |
| 51 gpu::SyncPointManager* sync_point_manager, | 53 gpu::SyncPointManager* sync_point_manager, |
| 52 scoped_ptr<CommandBufferDriver> driver) | 54 scoped_ptr<CommandBufferDriver> driver) |
| 53 : sync_point_manager_(sync_point_manager), | 55 : sync_point_manager_(sync_point_manager), |
| 54 control_task_runner_(control_task_runner), | 56 control_task_runner_(control_task_runner), |
| 55 driver_task_runner_(base::MessageLoop::current()->task_runner()), | 57 driver_task_runner_(base::MessageLoop::current()->task_runner()), |
| 56 driver_(driver.Pass()), | 58 driver_(driver.Pass()), |
| 57 viewport_parameter_listener_(listener.Pass()), | 59 viewport_parameter_listener_(listener.Pass()), |
| 58 binding_(this), | 60 binding_(this), |
| 59 observer_(nullptr), | 61 observer_(nullptr), |
| 60 weak_factory_(this) { | 62 weak_factory_(this) { |
| 61 driver_->set_client(make_scoped_ptr(new CommandBufferDriverClientImpl( | 63 driver_->set_client(make_scoped_ptr(new CommandBufferDriverClientImpl( |
| 62 weak_factory_.GetWeakPtr(), control_task_runner))); | 64 weak_factory_.GetWeakPtr(), control_task_runner))); |
| 63 | 65 |
| 64 control_task_runner_->PostTask( | 66 control_task_runner_->PostTask( |
| 65 FROM_HERE, base::Bind(&CommandBufferImpl::BindToRequest, | 67 FROM_HERE, base::Bind(&CommandBufferImpl::BindToRequest, |
| 66 base::Unretained(this), base::Passed(&request))); | 68 base::Unretained(this), base::Passed(&request))); |
| 67 } | 69 } |
| 68 | 70 |
| 69 CommandBufferImpl::~CommandBufferImpl() { | 71 CommandBufferImpl::~CommandBufferImpl() { |
| 70 driver_task_runner_->PostTask( | 72 driver_task_runner_->PostTask( |
| 71 FROM_HERE, base::Bind(&DestroyDriver, base::Passed(&driver_))); | 73 FROM_HERE, base::Bind(&DestroyDriver, base::Passed(&driver_))); |
| 72 } | 74 } |
| 73 | 75 |
| 74 void CommandBufferImpl::Initialize( | 76 void CommandBufferImpl::Initialize( |
| 75 mojo::CommandBufferSyncClientPtr sync_client, | 77 mojo::InterfaceHandle<mojo::CommandBufferSyncClient> sync_client, |
| 76 mojo::CommandBufferSyncPointClientPtr sync_point_client, | 78 mojo::InterfaceHandle<mojo::CommandBufferSyncPointClient> sync_point_client, |
| 77 mojo::CommandBufferLostContextObserverPtr loss_observer, | 79 mojo::InterfaceHandle<mojo::CommandBufferLostContextObserver> loss_observer, |
| 78 mojo::ScopedSharedBufferHandle shared_state) { | 80 mojo::ScopedSharedBufferHandle shared_state) { |
| 79 sync_point_client_ = sync_point_client.Pass(); | 81 sync_point_client_ = mojo::CommandBufferSyncPointClientPtr::Create( |
| 82 std::move(sync_point_client)); |
| 80 driver_task_runner_->PostTask( | 83 driver_task_runner_->PostTask( |
| 81 FROM_HERE, | 84 FROM_HERE, |
| 82 base::Bind(&CommandBufferDriver::Initialize, | 85 base::Bind(&CommandBufferDriver::Initialize, |
| 83 base::Unretained(driver_.get()), base::Passed(&sync_client), | 86 base::Unretained(driver_.get()), base::Passed(&sync_client), |
| 84 base::Passed(&loss_observer), | 87 base::Passed(&loss_observer), |
| 85 base::Passed(&shared_state))); | 88 base::Passed(&shared_state))); |
| 86 } | 89 } |
| 87 | 90 |
| 88 void CommandBufferImpl::SetGetBuffer(int32_t buffer) { | 91 void CommandBufferImpl::SetGetBuffer(int32_t buffer) { |
| 89 driver_task_runner_->PostTask( | 92 driver_task_runner_->PostTask( |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 control_task_runner_->PostTask( | 179 control_task_runner_->PostTask( |
| 177 FROM_HERE, | 180 FROM_HERE, |
| 178 base::Bind(&CommandBufferImpl::Destroy, base::Unretained(this))); | 181 base::Bind(&CommandBufferImpl::Destroy, base::Unretained(this))); |
| 179 } | 182 } |
| 180 | 183 |
| 181 void CommandBufferImpl::Destroy() { | 184 void CommandBufferImpl::Destroy() { |
| 182 delete this; | 185 delete this; |
| 183 } | 186 } |
| 184 | 187 |
| 185 } // namespace gles2 | 188 } // namespace gles2 |
| OLD | NEW |