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

Side by Side Diff: content/browser/gpu/gpu_process_host.h

Issue 23235002: Set up content in-process main threads via factory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ios Created 7 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ 5 #ifndef CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_
6 #define CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ 6 #define CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_
7 7
8 #include <map> 8 #include <map>
9 #include <queue> 9 #include <queue>
10 #include <set> 10 #include <set>
(...skipping 26 matching lines...) Expand all
37 namespace IPC { 37 namespace IPC {
38 struct ChannelHandle; 38 struct ChannelHandle;
39 } 39 }
40 40
41 namespace content { 41 namespace content {
42 class BrowserChildProcessHostImpl; 42 class BrowserChildProcessHostImpl;
43 class GpuMainThread; 43 class GpuMainThread;
44 class RenderWidgetHostViewFrameSubscriber; 44 class RenderWidgetHostViewFrameSubscriber;
45 class ShaderDiskCache; 45 class ShaderDiskCache;
46 46
47 typedef base::Thread* (*GpuMainThreadFactoryFunction)(const std::string& id);
48
47 class GpuProcessHost : public BrowserChildProcessHostDelegate, 49 class GpuProcessHost : public BrowserChildProcessHostDelegate,
48 public IPC::Sender, 50 public IPC::Sender,
49 public base::NonThreadSafe { 51 public base::NonThreadSafe {
50 public: 52 public:
51 enum GpuProcessKind { 53 enum GpuProcessKind {
52 GPU_PROCESS_KIND_UNSANDBOXED, 54 GPU_PROCESS_KIND_UNSANDBOXED,
53 GPU_PROCESS_KIND_SANDBOXED, 55 GPU_PROCESS_KIND_SANDBOXED,
54 GPU_PROCESS_KIND_COUNT 56 GPU_PROCESS_KIND_COUNT
55 }; 57 };
56 58
(...skipping 18 matching lines...) Expand all
75 static void GetProcessHandles( 77 static void GetProcessHandles(
76 const GpuDataManager::GetGpuProcessHandlesCallback& callback); 78 const GpuDataManager::GetGpuProcessHandlesCallback& callback);
77 79
78 // Helper function to send the given message to the GPU process on the IO 80 // Helper function to send the given message to the GPU process on the IO
79 // thread. Calls Get and if a host is returned, sends it. Can be called from 81 // thread. Calls Get and if a host is returned, sends it. Can be called from
80 // any thread. Deletes the message if it cannot be sent. 82 // any thread. Deletes the message if it cannot be sent.
81 CONTENT_EXPORT static void SendOnIO(GpuProcessKind kind, 83 CONTENT_EXPORT static void SendOnIO(GpuProcessKind kind,
82 CauseForGpuLaunch cause, 84 CauseForGpuLaunch cause,
83 IPC::Message* message); 85 IPC::Message* message);
84 86
87 CONTENT_EXPORT static void RegisterGpuMainThreadFactory(
88 GpuMainThreadFactoryFunction create);
89
85 // Get the GPU process host for the GPU process with the given ID. Returns 90 // Get the GPU process host for the GPU process with the given ID. Returns
86 // null if the process no longer exists. 91 // null if the process no longer exists.
87 static GpuProcessHost* FromID(int host_id); 92 static GpuProcessHost* FromID(int host_id);
88 int host_id() const { return host_id_; } 93 int host_id() const { return host_id_; }
89 94
90 // IPC::Sender implementation. 95 // IPC::Sender implementation.
91 virtual bool Send(IPC::Message* msg) OVERRIDE; 96 virtual bool Send(IPC::Message* msg) OVERRIDE;
92 97
93 // Adds a message filter to the GpuProcessHost's channel. 98 // Adds a message filter to the GpuProcessHost's channel.
94 void AddFilter(IPC::ChannelProxy::MessageFilter* filter); 99 void AddFilter(IPC::ChannelProxy::MessageFilter* filter);
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // Whether the GPU process is valid, set to false after Send() failed. 212 // Whether the GPU process is valid, set to false after Send() failed.
208 bool valid_; 213 bool valid_;
209 214
210 // Whether we are running a GPU thread inside the browser process instead 215 // Whether we are running a GPU thread inside the browser process instead
211 // of a separate GPU process. 216 // of a separate GPU process.
212 bool in_process_; 217 bool in_process_;
213 218
214 bool swiftshader_rendering_; 219 bool swiftshader_rendering_;
215 GpuProcessKind kind_; 220 GpuProcessKind kind_;
216 221
217 #if !defined(CHROME_MULTIPLE_DLL) 222 scoped_ptr<base::Thread> in_process_gpu_thread_;
218 scoped_ptr<GpuMainThread> in_process_gpu_thread_;
219 #endif
220 223
221 // Whether we actually launched a GPU process. 224 // Whether we actually launched a GPU process.
222 bool process_launched_; 225 bool process_launched_;
223 226
224 // Whether the GPU process successfully initialized. 227 // Whether the GPU process successfully initialized.
225 bool initialized_; 228 bool initialized_;
226 229
227 // Time Init started. Used to log total GPU process startup time to UMA. 230 // Time Init started. Used to log total GPU process startup time to UMA.
228 base::TimeTicks init_start_time_; 231 base::TimeTicks init_start_time_;
229 232
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 typedef std::multimap<int, scoped_refptr<GpuSurfaceTracker::SurfaceRef> > 269 typedef std::multimap<int, scoped_refptr<GpuSurfaceTracker::SurfaceRef> >
267 SurfaceRefMap; 270 SurfaceRefMap;
268 SurfaceRefMap surface_refs_; 271 SurfaceRefMap surface_refs_;
269 272
270 DISALLOW_COPY_AND_ASSIGN(GpuProcessHost); 273 DISALLOW_COPY_AND_ASSIGN(GpuProcessHost);
271 }; 274 };
272 275
273 } // namespace content 276 } // namespace content
274 277
275 #endif // CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ 278 #endif // CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698