Index: mojo/gles2/command_buffer_client_impl.cc |
diff --git a/mojo/gles2/command_buffer_client_impl.cc b/mojo/gles2/command_buffer_client_impl.cc |
index 14f0569ce1495c1f9ae994a8fdec6660abf305d6..5d778ab283992450bcf8cfc7fccca8432593cac8 100644 |
--- a/mojo/gles2/command_buffer_client_impl.cc |
+++ b/mojo/gles2/command_buffer_client_impl.cc |
@@ -16,6 +16,7 @@ |
#include "components/mus/gles2/command_buffer_type_conversions.h" |
#include "components/mus/gles2/mojo_buffer_backing.h" |
#include "components/mus/gles2/mojo_gpu_memory_buffer.h" |
+#include "gpu/command_buffer/client/gpu_control_client.h" |
#include "gpu/command_buffer/common/command_buffer_id.h" |
#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" |
#include "gpu/command_buffer/common/sync_token.h" |
@@ -61,15 +62,11 @@ void InitializeCallback(mus::mojom::CommandBufferInitializeResultPtr* output, |
} // namespace |
-CommandBufferDelegate::~CommandBufferDelegate() {} |
- |
-void CommandBufferDelegate::ContextLost() {} |
- |
CommandBufferClientImpl::CommandBufferClientImpl( |
- CommandBufferDelegate* delegate, |
const std::vector<int32_t>& attribs, |
mojo::ScopedMessagePipeHandle command_buffer_handle) |
- : delegate_(delegate), |
+ : gpu_control_client_(nullptr), |
+ destroyed_(false), |
attribs_(attribs), |
client_binding_(this), |
command_buffer_id_(), |
@@ -203,6 +200,10 @@ void CommandBufferClientImpl::DestroyTransferBuffer(int32_t id) { |
command_buffer_->DestroyTransferBuffer(id); |
} |
+void CommandBufferClientImpl::SetGpuControlClient(gpu::GpuControlClient* c) { |
+ gpu_control_client_ = c; |
+} |
+ |
gpu::Capabilities CommandBufferClientImpl::GetCapabilities() { |
return capabilities_; |
} |
@@ -285,10 +286,14 @@ void CommandBufferClientImpl::SignalQuery(uint32_t query, |
} |
void CommandBufferClientImpl::Destroyed(int32_t lost_reason, int32_t error) { |
+ if (destroyed_) |
+ return; |
last_state_.context_lost_reason = |
static_cast<gpu::error::ContextLostReason>(lost_reason); |
last_state_.error = static_cast<gpu::error::Error>(error); |
- delegate_->ContextLost(); |
+ DCHECK(gpu_control_client_); |
+ gpu_control_client_->OnGpuControlLostContext(); |
+ destroyed_ = true; |
} |
void CommandBufferClientImpl::SignalAck(uint32_t id) { |