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

Side by Side Diff: chrome/browser/gpu_process_host_ui_shim.h

Issue 6840060: Progress towards fixing 77536 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: "" Created 9 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/gpu_process_host_ui_shim.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_ 5 #ifndef CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_
6 #define CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_ 6 #define CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_
7 #pragma once 7 #pragma once
8 8
9 // This class lives on the UI thread and supports classes like the 9 // This class lives on the UI thread and supports classes like the
10 // BackingStoreProxy, which must live on the UI thread. The IO thread 10 // BackingStoreProxy, which must live on the UI thread. The IO thread
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 115
116 // Sends a reply message later when the next GpuHostMsg_SynchronizeReply comes 116 // Sends a reply message later when the next GpuHostMsg_SynchronizeReply comes
117 // in. 117 // in.
118 void Synchronize(SynchronizeCallback* callback); 118 void Synchronize(SynchronizeCallback* callback);
119 119
120 typedef Callback1<int32>::Type CreateCommandBufferCallback; 120 typedef Callback1<int32>::Type CreateCommandBufferCallback;
121 121
122 // Tells the GPU process to create a new command buffer that draws into the 122 // Tells the GPU process to create a new command buffer that draws into the
123 // window associated with the given renderer. 123 // window associated with the given renderer.
124 void CreateViewCommandBuffer( 124 void CreateViewCommandBuffer(
125 gfx::PluginWindowHandle compositing_surface,
125 int32 render_view_id, 126 int32 render_view_id,
126 int32 renderer_id, 127 int32 renderer_id,
127 const GPUCreateCommandBufferConfig& init_params, 128 const GPUCreateCommandBufferConfig& init_params,
128 CreateCommandBufferCallback* callback); 129 CreateCommandBufferCallback* callback);
129 130
130 #if defined(OS_MACOSX) 131 #if defined(OS_MACOSX)
131 // Notify the GPU process that an accelerated surface was destroyed. 132 // Notify the GPU process that an accelerated surface was destroyed.
132 void DidDestroyAcceleratedSurface(int renderer_id, int32 render_view_id); 133 void DidDestroyAcceleratedSurface(int renderer_id, int32 render_view_id);
133 134
134 // TODO(apatrick): Remove this when mac does not use AcceleratedSurfaces for 135 // TODO(apatrick): Remove this when mac does not use AcceleratedSurfaces for
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // the GPU process, but haven't heard back about yet. 191 // the GPU process, but haven't heard back about yet.
191 std::queue<linked_ptr<EstablishChannelCallback> > channel_requests_; 192 std::queue<linked_ptr<EstablishChannelCallback> > channel_requests_;
192 193
193 // The pending synchronization requests we need to reply to. 194 // The pending synchronization requests we need to reply to.
194 std::queue<linked_ptr<SynchronizeCallback> > synchronize_requests_; 195 std::queue<linked_ptr<SynchronizeCallback> > synchronize_requests_;
195 196
196 // The pending create command buffer requests we need to reply to. 197 // The pending create command buffer requests we need to reply to.
197 std::queue<linked_ptr<CreateCommandBufferCallback> > 198 std::queue<linked_ptr<CreateCommandBufferCallback> >
198 create_command_buffer_requests_; 199 create_command_buffer_requests_;
199 200
201 #if defined(OS_LINUX)
200 typedef std::pair<int32 /* renderer_id */, 202 typedef std::pair<int32 /* renderer_id */,
201 int32 /* render_view_id */> ViewID; 203 int32 /* render_view_id */> ViewID;
202 204
203 // Encapsulates surfaces that we acquire when creating view command buffers. 205 // Encapsulates surfaces that we lock when creating view command buffers.
204 // We assume that a render view has at most 1 such surface associated 206 // We release this lock once the command buffer (or associated GPU process)
205 // with it. Multimap is used to simulate reference counting, see comment in 207 // is destroyed. This prevents the browser from destroying the surface
208 // while the GPU process is drawing to it.
209
210 // Multimap is used to simulate reference counting, see comment in
206 // GpuProcessHostUIShim::CreateViewCommandBuffer. 211 // GpuProcessHostUIShim::CreateViewCommandBuffer.
207 class ViewSurface; 212 class SurfaceRef;
208 typedef std::multimap<ViewID, linked_ptr<ViewSurface> > ViewSurfaceMap; 213 typedef std::multimap<ViewID, linked_ptr<SurfaceRef> > SurfaceRefMap;
209 ViewSurfaceMap acquired_surfaces_; 214 SurfaceRefMap surface_refs_;
215 #endif
210 216
211 // In single process and in process GPU mode, this references the 217 // In single process and in process GPU mode, this references the
212 // GpuChannelManager or null otherwise. It must be called and deleted on the 218 // GpuChannelManager or null otherwise. It must be called and deleted on the
213 // GPU thread. 219 // GPU thread.
214 GpuChannelManager* gpu_channel_manager_; 220 GpuChannelManager* gpu_channel_manager_;
215 221
216 // This is likewise single process / in process GPU specific. This is a Sender 222 // This is likewise single process / in process GPU specific. This is a Sender
217 // implementation that forwards IPC messages to this UI shim on the UI thread. 223 // implementation that forwards IPC messages to this UI shim on the UI thread.
218 IPC::Channel::Sender* ui_thread_sender_; 224 IPC::Channel::Sender* ui_thread_sender_;
219 }; 225 };
220 226
221 #endif // CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_ 227 #endif // CHROME_BROWSER_GPU_PROCESS_HOST_UI_SHIM_H_
222 228
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/gpu_process_host_ui_shim.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698