| Index: components/viz/common/server_gpu_memory_buffer_manager.h
|
| diff --git a/components/viz/common/server_gpu_memory_buffer_manager.h b/components/viz/common/server_gpu_memory_buffer_manager.h
|
| index c6af5a668803a4a26847c023a10407df1e89096b..728e72de0adf1e0cc420a8925d8381c065942e1e 100644
|
| --- a/components/viz/common/server_gpu_memory_buffer_manager.h
|
| +++ b/components/viz/common/server_gpu_memory_buffer_manager.h
|
| @@ -8,9 +8,10 @@
|
| #include <memory>
|
|
|
| #include "base/macros.h"
|
| -#include "base/memory/weak_ptr.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/synchronization/waitable_event.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
|
| #include "gpu/ipc/host/gpu_memory_buffer_support.h"
|
|
|
| @@ -24,11 +25,15 @@ namespace viz {
|
|
|
| // This GpuMemoryBufferManager implementation is for [de]allocating gpu memory
|
| // from the gpu process over the mojom.GpuService api.
|
| -class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
|
| +class ServerGpuMemoryBufferManager
|
| + : public gpu::GpuMemoryBufferManager,
|
| + public base::RefCountedThreadSafe<ServerGpuMemoryBufferManager> {
|
| public:
|
| - ServerGpuMemoryBufferManager(ui::mojom::GpuService* gpu_service,
|
| - int client_id);
|
| - ~ServerGpuMemoryBufferManager() override;
|
| + ServerGpuMemoryBufferManager(
|
| + ui::mojom::GpuService* gpu_service,
|
| + int client_id,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner =
|
| + base::ThreadTaskRunnerHandle::Get());
|
|
|
| void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
|
| int client_id,
|
| @@ -54,14 +59,24 @@ class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
|
| void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer,
|
| const gpu::SyncToken& sync_token) override;
|
|
|
| + void set_gpu_service(ui::mojom::GpuService* service) {
|
| + gpu_service_ = service;
|
| + }
|
| +
|
| private:
|
| + friend class base::RefCountedThreadSafe<ServerGpuMemoryBufferManager>;
|
| + ~ServerGpuMemoryBufferManager() override;
|
| +
|
| void OnGpuMemoryBufferAllocated(
|
| int client_id,
|
| base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback,
|
| const gfx::GpuMemoryBufferHandle& handle);
|
| void SignalOnGpuMemoryBufferAllocated(
|
| - gfx::GpuMemoryBufferHandle* handle,
|
| + std::unique_ptr<gfx::GpuMemoryBuffer>* buffer,
|
| base::WaitableEvent* wait_event,
|
| + const gfx::Size& size,
|
| + gfx::BufferFormat format,
|
| + gfx::BufferUsage usage,
|
| const gfx::GpuMemoryBufferHandle& allocated_handle);
|
|
|
| ui::mojom::GpuService* gpu_service_;
|
| @@ -76,7 +91,6 @@ class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
|
|
|
| const gpu::GpuMemoryBufferConfigurationSet native_configurations_;
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| - base::WeakPtrFactory<ServerGpuMemoryBufferManager> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ServerGpuMemoryBufferManager);
|
| };
|
|
|