| Index: components/mus/common/gpu_service.h
|
| diff --git a/components/mus/common/gpu_service.h b/components/mus/common/gpu_service.h
|
| index 91be13f3d90cce73086c0f801cda3c15834b56be..bb3d909c7fa6ac7ef57e3672707114e85aa3b9cd 100644
|
| --- a/components/mus/common/gpu_service.h
|
| +++ b/components/mus/common/gpu_service.h
|
| @@ -12,7 +12,9 @@
|
| #include "base/synchronization/lock.h"
|
| #include "base/synchronization/waitable_event.h"
|
| #include "base/threading/thread.h"
|
| +#include "components/mus/common/mojo_gpu_memory_buffer_manager.h"
|
| #include "components/mus/common/mus_common_export.h"
|
| +#include "components/mus/public/interfaces/gpu_service.mojom.h"
|
| #include "gpu/ipc/client/gpu_channel_host.h"
|
|
|
| namespace shell {
|
| @@ -21,12 +23,16 @@ class Connector;
|
|
|
| namespace mus {
|
|
|
| -class MojoGpuMemoryBufferManager;
|
| -
|
| class MUS_COMMON_EXPORT GpuService : public gpu::GpuChannelHostFactory {
|
| public:
|
| - scoped_refptr<gpu::GpuChannelHost> EstablishGpuChannel(
|
| + void EstablishGpuChannel(shell::Connector* connector,
|
| + const base::Closure& callback);
|
| + scoped_refptr<gpu::GpuChannelHost> EstablishGpuChannelSync(
|
| shell::Connector* connector);
|
| + scoped_refptr<gpu::GpuChannelHost> GetGpuChannel();
|
| + gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager() const {
|
| + return gpu_memory_buffer_manager_.get();
|
| + }
|
|
|
| static bool UseChromeGpuCommandBuffer();
|
| static GpuService* GetInstance();
|
| @@ -37,6 +43,12 @@ class MUS_COMMON_EXPORT GpuService : public gpu::GpuChannelHostFactory {
|
| GpuService();
|
| ~GpuService() override;
|
|
|
| + scoped_refptr<gpu::GpuChannelHost> GetGpuChannelLocked();
|
| + void EstablishGpuChannelDone(bool locked,
|
| + int client_id,
|
| + mojom::ChannelHandlePtr channel_handle,
|
| + mojom::GpuInfoPtr gpu_info);
|
| +
|
| // gpu::GpuChannelHostFactory overrides:
|
| bool IsMainThread() override;
|
| scoped_refptr<base::SingleThreadTaskRunner> GetIOThreadTaskRunner() override;
|
| @@ -48,9 +60,14 @@ class MUS_COMMON_EXPORT GpuService : public gpu::GpuChannelHostFactory {
|
| base::Thread io_thread_;
|
| std::unique_ptr<MojoGpuMemoryBufferManager> gpu_memory_buffer_manager_;
|
|
|
| - // Lock for |gpu_channel_|.
|
| + // Lock for |gpu_channel_|, |establish_callbacks_| & |is_establishing_|.
|
| base::Lock lock_;
|
| + bool is_establishing_;
|
| scoped_refptr<gpu::GpuChannelHost> gpu_channel_;
|
| + using CallbackVector = std::vector<
|
| + std::pair<scoped_refptr<base::SingleThreadTaskRunner>, base::Closure>>;
|
| + CallbackVector establish_callbacks_;
|
| + base::ConditionVariable establishing_condition_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(GpuService);
|
| };
|
|
|