De-Client CommandBuffer interface
This removes the CommandBufferClient interface from mojo.CommandBuffer.
It had two methods on it:
*) DidDestroy() which is redundant with the pipe closing, removed.
*) DidLoseContext(uint32 reason) which is used to signal an error code
prior to the pipe closing. Replaced with an observer interface.
BUG=451319
R=sky@chromium.org
Review URL: https://codereview.chromium.org/868203003
diff --git a/services/gles2/command_buffer_impl.cc b/services/gles2/command_buffer_impl.cc
index 129238c..c370068 100644
--- a/services/gles2/command_buffer_impl.cc
+++ b/services/gles2/command_buffer_impl.cc
@@ -28,8 +28,6 @@
control_task_runner_(control_task_runner) {}
private:
- void DidDestroy() override { delete this; }
-
void UpdateVSyncParameters(base::TimeTicks timebase,
base::TimeDelta interval) override {
control_task_runner_->PostTask(
@@ -37,10 +35,10 @@
command_buffer_, timebase, interval));
}
- void LostContext(int32_t lost_reason) override {
+ void DidLoseContext() override {
control_task_runner_->PostTask(
- FROM_HERE, base::Bind(&CommandBufferImpl::LostContext, command_buffer_,
- lost_reason));
+ FROM_HERE, base::Bind(&CommandBufferImpl::DidLoseContext,
+ command_buffer_));
}
base::WeakPtr<CommandBufferImpl> command_buffer_;
@@ -60,8 +58,8 @@
viewport_parameter_listener_(listener.Pass()),
binding_(this),
weak_factory_(this) {
- driver_->set_client(new CommandBufferDriverClientImpl(
- weak_factory_.GetWeakPtr(), control_task_runner));
+ driver_->set_client(make_scoped_ptr(new CommandBufferDriverClientImpl(
+ weak_factory_.GetWeakPtr(), control_task_runner)));
control_task_runner->PostTask(
FROM_HERE, base::Bind(&CommandBufferImpl::BindToRequest,
@@ -69,7 +67,6 @@
}
CommandBufferImpl::~CommandBufferImpl() {
- binding_.client()->DidDestroy();
driver_task_runner_->PostTask(
FROM_HERE, base::Bind(&DestroyDriver, base::Passed(&driver_)));
}
@@ -77,12 +74,14 @@
void CommandBufferImpl::Initialize(
mojo::CommandBufferSyncClientPtr sync_client,
mojo::CommandBufferSyncPointClientPtr sync_point_client,
+ mojo::CommandBufferLostContextObserverPtr loss_observer,
mojo::ScopedSharedBufferHandle shared_state) {
sync_point_client_ = sync_point_client.Pass();
driver_task_runner_->PostTask(
FROM_HERE,
base::Bind(&CommandBufferDriver::Initialize,
base::Unretained(driver_.get()), base::Passed(&sync_client),
+ base::Passed(&loss_observer),
base::Passed(&shared_state)));
}
@@ -146,8 +145,8 @@
binding_.Bind(request.Pass());
}
-void CommandBufferImpl::LostContext(int32_t reason) {
- binding_.client()->LostContext(reason);
+void CommandBufferImpl::DidLoseContext() {
+ binding_.OnConnectionError();
}
void CommandBufferImpl::UpdateVSyncParameters(base::TimeTicks timebase,