Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1426)

Unified Diff: services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h

Issue 2651443002: Fix potential shutdown deadlock in UI service (Closed)
Patch Set: . Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h
diff --git a/services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h b/services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h
index 26d78ea5781ceb1ffc894cfd8784a668392ef2df..7332371139ea0adb00b9fbf7570afa9f8a486e19 100644
--- a/services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h
+++ b/services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.h
@@ -6,6 +6,7 @@
#define SERVICES_UI_PUBLIC_CPP_GPU_CLIENT_GPU_MEMORY_BUFFER_MANAGER_H_
#include <memory>
+#include <set>
#include <vector>
#include "base/macros.h"
@@ -29,11 +30,16 @@ class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
private:
void InitThread(mojom::GpuPtrInfo gpu_info);
void TearDownThread();
+ void DisconnectGpuOnThread();
void AllocateGpuMemoryBufferOnThread(const gfx::Size& size,
gfx::BufferFormat format,
gfx::BufferUsage usage,
gfx::GpuMemoryBufferHandle* handle,
base::WaitableEvent* wait);
+ void OnGpuMemoryBufferAllocatedOnThread(
+ gfx::GpuMemoryBufferHandle* ret_handle,
+ base::WaitableEvent* wait,
+ const gfx::GpuMemoryBufferHandle& handle);
void DeletedGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
const gpu::SyncToken& sync_token);
@@ -45,11 +51,13 @@ class ClientGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
gpu::SurfaceHandle surface_handle) override;
void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer,
const gpu::SyncToken& sync_token) override;
+
int counter_ = 0;
// TODO(sad): Explore the option of doing this from an existing thread.
base::Thread thread_;
mojom::GpuPtr gpu_;
base::WeakPtr<ClientGpuMemoryBufferManager> weak_ptr_;
+ std::set<base::WaitableEvent*> pending_allocation_waiters_;
base::WeakPtrFactory<ClientGpuMemoryBufferManager> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ClientGpuMemoryBufferManager);
« no previous file with comments | « no previous file | services/ui/public/cpp/gpu/client_gpu_memory_buffer_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698