| Index: mojo/services/gles2/command_buffer_impl.h
|
| diff --git a/mojo/services/gles2/command_buffer_impl.h b/mojo/services/gles2/command_buffer_impl.h
|
| index 44ff14ca5cc7d50eebf1bd34b44234dad8fe21f6..bce88bfbaa13d10e32a7db09b3fc76cb30ad3ad5 100644
|
| --- a/mojo/services/gles2/command_buffer_impl.h
|
| +++ b/mojo/services/gles2/command_buffer_impl.h
|
| @@ -6,35 +6,47 @@
|
| #define MOJO_SERVICES_GLES2_COMMAND_BUFFER_IMPL_H_
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "mojo/public/cpp/bindings/strong_binding.h"
|
| #include "mojo/services/public/interfaces/gpu/command_buffer.mojom.h"
|
|
|
| namespace mojo {
|
| class CommandBufferDriver;
|
|
|
| +// This class listens to the CommandBuffer message pipe on a low-latency thread
|
| +// so that we can insert sync points without blocking on the GL driver. It
|
| +// forwards most method calls to the CommandBufferDriver, which runs on the
|
| +// same thread as the native viewport.
|
| class CommandBufferImpl : public CommandBuffer {
|
| public:
|
| - CommandBufferImpl(InterfaceRequest<CommandBuffer> request,
|
| - scoped_ptr<CommandBufferDriver> driver);
|
| + CommandBufferImpl(
|
| + InterfaceRequest<CommandBuffer> request,
|
| + scoped_refptr<base::SingleThreadTaskRunner> control_task_runner,
|
| + scoped_ptr<CommandBufferDriver> driver);
|
| ~CommandBufferImpl() override;
|
|
|
| void Initialize(CommandBufferSyncClientPtr sync_client,
|
| - mojo::ScopedSharedBufferHandle shared_state) override;
|
| + ScopedSharedBufferHandle shared_state) override;
|
| void SetGetBuffer(int32_t buffer) override;
|
| void Flush(int32_t put_offset) override;
|
| void MakeProgress(int32_t last_get_offset) override;
|
| void RegisterTransferBuffer(int32_t id,
|
| - mojo::ScopedSharedBufferHandle transfer_buffer,
|
| + ScopedSharedBufferHandle transfer_buffer,
|
| uint32_t size) override;
|
| void DestroyTransferBuffer(int32_t id) override;
|
| void Echo(const Callback<void()>& callback) override;
|
|
|
| private:
|
| + void BindToRequest(InterfaceRequest<CommandBuffer> request);
|
| void OnContextLost(int32_t reason);
|
|
|
| - StrongBinding<CommandBuffer> binding_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> driver_task_runner_;
|
| scoped_ptr<CommandBufferDriver> driver_;
|
|
|
| + StrongBinding<CommandBuffer> binding_;
|
| + base::WeakPtrFactory<CommandBufferImpl> weak_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(CommandBufferImpl);
|
| };
|
|
|
|
|