Index: content/common/gpu/gpu_channel_manager.h |
diff --git a/content/common/gpu/gpu_channel_manager.h b/content/common/gpu/gpu_channel_manager.h |
index b256a56d8d0123b600f2f1140fefddf1ade58975..78b5079439f9c6bac8a605320856fc481ff664c9 100644 |
--- a/content/common/gpu/gpu_channel_manager.h |
+++ b/content/common/gpu/gpu_channel_manager.h |
@@ -5,6 +5,7 @@ |
#ifndef CONTENT_COMMON_GPU_GPU_CHANNEL_MANAGER_H_ |
#define CONTENT_COMMON_GPU_GPU_CHANNEL_MANAGER_H_ |
+#include <deque> |
#include <vector> |
#include "base/hash_tables.h" |
@@ -96,6 +97,16 @@ class GpuChannelManager : public IPC::Listener, |
gfx::GLSurface* GetDefaultOffscreenSurface(); |
private: |
+ struct ImageOperation { |
+ ImageOperation(int32 sync_point, base::Closure callback); |
+ ~ImageOperation(); |
+ |
+ int32 sync_point; |
+ base::Closure callback; |
+ }; |
+ typedef base::hash_map<int, scoped_refptr<GpuChannel> > GpuChannelMap; |
+ typedef std::deque<ImageOperation*> ImageOperationQueue; |
+ |
// Message handlers. |
void OnEstablishChannel(int client_id, bool share_context); |
void OnCloseChannel(const IPC::ChannelHandle& channel_handle); |
@@ -106,6 +117,13 @@ class GpuChannelManager : public IPC::Listener, |
int32 render_view_id, |
int32 client_id, |
const GPUCreateCommandBufferConfig& init_params); |
+ void CreateImage( |
+ gfx::PluginWindowHandle window, int32 client_id, int32 image_id); |
+ void OnCreateImage( |
+ gfx::PluginWindowHandle window, int32 client_id, int32 image_id); |
+ void DeleteImage(int32 client_id, int32 image_id); |
+ void OnDeleteImage(int32 client_id, int32 image_id, int32 sync_point); |
+ void OnDeleteImageSyncPointRetired(ImageOperation*); |
void OnLoseAllContexts(); |
@@ -118,7 +136,6 @@ class GpuChannelManager : public IPC::Listener, |
// These objects manage channels to individual renderer processes there is |
// one channel for each renderer process that has connected to this GPU |
// process. |
- typedef base::hash_map<int, scoped_refptr<GpuChannel> > GpuChannelMap; |
GpuChannelMap gpu_channels_; |
scoped_refptr<gfx::GLShareGroup> share_group_; |
scoped_refptr<gpu::gles2::MailboxManager> mailbox_manager_; |
@@ -127,6 +144,7 @@ class GpuChannelManager : public IPC::Listener, |
scoped_refptr<SyncPointManager> sync_point_manager_; |
scoped_ptr<gpu::gles2::ProgramCache> program_cache_; |
scoped_refptr<gfx::GLSurface> default_offscreen_surface_; |
+ ImageOperationQueue image_operations_; |
DISALLOW_COPY_AND_ASSIGN(GpuChannelManager); |
}; |