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); |
}; |