OLD | NEW |
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 UI_COMPOSITOR_COMPOSITOR_H_ | 5 #ifndef UI_COMPOSITOR_COMPOSITOR_H_ |
6 #define UI_COMPOSITOR_COMPOSITOR_H_ | 6 #define UI_COMPOSITOR_COMPOSITOR_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 // Removes the reflector, which stops the mirroring. | 92 // Removes the reflector, which stops the mirroring. |
93 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0; | 93 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0; |
94 | 94 |
95 virtual scoped_refptr<cc::ContextProvider> | 95 virtual scoped_refptr<cc::ContextProvider> |
96 OffscreenContextProviderForMainThread() = 0; | 96 OffscreenContextProviderForMainThread() = 0; |
97 virtual scoped_refptr<cc::ContextProvider> | 97 virtual scoped_refptr<cc::ContextProvider> |
98 OffscreenContextProviderForCompositorThread() = 0; | 98 OffscreenContextProviderForCompositorThread() = 0; |
99 | 99 |
100 // Destroys per-compositor data. | 100 // Destroys per-compositor data. |
101 virtual void RemoveCompositor(Compositor* compositor) = 0; | 101 virtual void RemoveCompositor(Compositor* compositor) = 0; |
| 102 |
| 103 // When true, the factory uses test contexts that do not do real GL |
| 104 // operations. |
| 105 virtual bool UsesTestContexts() = 0; |
102 }; | 106 }; |
103 | 107 |
104 // The default factory that creates in-process contexts. | 108 // The default factory that creates in-process contexts. |
105 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { | 109 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { |
106 public: | 110 public: |
107 DefaultContextFactory(); | 111 DefaultContextFactory(); |
108 virtual ~DefaultContextFactory(); | 112 virtual ~DefaultContextFactory(); |
109 | 113 |
110 // ContextFactory implementation | 114 // ContextFactory implementation |
111 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( | 115 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( |
112 Compositor* compositor) OVERRIDE; | 116 Compositor* compositor) OVERRIDE; |
113 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() | 117 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() |
114 OVERRIDE; | 118 OVERRIDE; |
115 | 119 |
116 virtual scoped_refptr<Reflector> CreateReflector( | 120 virtual scoped_refptr<Reflector> CreateReflector( |
117 Compositor* compositor, | 121 Compositor* compositor, |
118 Layer* layer) OVERRIDE; | 122 Layer* layer) OVERRIDE; |
119 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 123 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
120 | 124 |
121 virtual scoped_refptr<cc::ContextProvider> | 125 virtual scoped_refptr<cc::ContextProvider> |
122 OffscreenContextProviderForMainThread() OVERRIDE; | 126 OffscreenContextProviderForMainThread() OVERRIDE; |
123 virtual scoped_refptr<cc::ContextProvider> | 127 virtual scoped_refptr<cc::ContextProvider> |
124 OffscreenContextProviderForCompositorThread() OVERRIDE; | 128 OffscreenContextProviderForCompositorThread() OVERRIDE; |
125 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; | 129 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; |
| 130 virtual bool UsesTestContexts() OVERRIDE; |
126 | 131 |
127 bool Initialize(); | 132 bool Initialize(); |
128 | 133 |
129 private: | 134 private: |
130 scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( | 135 scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( |
131 Compositor* compositor, | 136 Compositor* compositor, |
132 bool offscreen); | 137 bool offscreen); |
133 | 138 |
134 scoped_refptr<ContextProviderFromContextFactory> | 139 scoped_refptr<ContextProviderFromContextFactory> |
135 offscreen_contexts_main_thread_; | 140 offscreen_contexts_main_thread_; |
(...skipping 18 matching lines...) Expand all Loading... |
154 virtual scoped_refptr<Reflector> CreateReflector( | 159 virtual scoped_refptr<Reflector> CreateReflector( |
155 Compositor* mirrored_compositor, | 160 Compositor* mirrored_compositor, |
156 Layer* mirroring_layer) OVERRIDE; | 161 Layer* mirroring_layer) OVERRIDE; |
157 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 162 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
158 | 163 |
159 virtual scoped_refptr<cc::ContextProvider> | 164 virtual scoped_refptr<cc::ContextProvider> |
160 OffscreenContextProviderForMainThread() OVERRIDE; | 165 OffscreenContextProviderForMainThread() OVERRIDE; |
161 virtual scoped_refptr<cc::ContextProvider> | 166 virtual scoped_refptr<cc::ContextProvider> |
162 OffscreenContextProviderForCompositorThread() OVERRIDE; | 167 OffscreenContextProviderForCompositorThread() OVERRIDE; |
163 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; | 168 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; |
| 169 virtual bool UsesTestContexts() OVERRIDE; |
164 | 170 |
165 private: | 171 private: |
166 scoped_refptr<ContextProviderFromContextFactory> | 172 scoped_refptr<ContextProviderFromContextFactory> |
167 offscreen_contexts_main_thread_; | 173 offscreen_contexts_main_thread_; |
168 scoped_refptr<ContextProviderFromContextFactory> | 174 scoped_refptr<ContextProviderFromContextFactory> |
169 offscreen_contexts_compositor_thread_; | 175 offscreen_contexts_compositor_thread_; |
170 | 176 |
171 DISALLOW_COPY_AND_ASSIGN(TestContextFactory); | 177 DISALLOW_COPY_AND_ASSIGN(TestContextFactory); |
172 }; | 178 }; |
173 | 179 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 // appropriately transformed texture for each transformed view in the widget's | 289 // appropriately transformed texture for each transformed view in the widget's |
284 // view hierarchy. | 290 // view hierarchy. |
285 class COMPOSITOR_EXPORT Compositor | 291 class COMPOSITOR_EXPORT Compositor |
286 : NON_EXPORTED_BASE(public cc::LayerTreeHostClient), | 292 : NON_EXPORTED_BASE(public cc::LayerTreeHostClient), |
287 public base::SupportsWeakPtr<Compositor> { | 293 public base::SupportsWeakPtr<Compositor> { |
288 public: | 294 public: |
289 Compositor(CompositorDelegate* delegate, | 295 Compositor(CompositorDelegate* delegate, |
290 gfx::AcceleratedWidget widget); | 296 gfx::AcceleratedWidget widget); |
291 virtual ~Compositor(); | 297 virtual ~Compositor(); |
292 | 298 |
| 299 // Set up the compositor ContextFactory for a test environment. Unit tests |
| 300 // that do not have a full content environment need to call this before |
| 301 // initializing the Compositor. |
| 302 // Some tests expect pixel output, and they should pass false for |
| 303 // |allow_test_contexts|. Most unit tests should pass true. Once this has been |
| 304 // called, the Initialize() and Terminate() methods should be used as normal. |
| 305 static void InitializeContextFactoryForTests(bool allow_test_contexts); |
| 306 |
293 static void Initialize(); | 307 static void Initialize(); |
294 static bool WasInitializedWithThread(); | 308 static bool WasInitializedWithThread(); |
295 static scoped_refptr<base::MessageLoopProxy> GetCompositorMessageLoop(); | 309 static scoped_refptr<base::MessageLoopProxy> GetCompositorMessageLoop(); |
296 static void Terminate(); | 310 static void Terminate(); |
297 | 311 |
298 // Schedules a redraw of the layer tree associated with this compositor. | 312 // Schedules a redraw of the layer tree associated with this compositor. |
299 void ScheduleDraw(); | 313 void ScheduleDraw(); |
300 | 314 |
301 // Sets the root of the layer tree drawn by this Compositor. The root layer | 315 // Sets the root of the layer tree drawn by this Compositor. The root layer |
302 // must have no parent. The compositor's root layer is reset if the root layer | 316 // must have no parent. The compositor's root layer is reset if the root layer |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 bool disable_schedule_composite_; | 454 bool disable_schedule_composite_; |
441 | 455 |
442 CompositorLock* compositor_lock_; | 456 CompositorLock* compositor_lock_; |
443 | 457 |
444 DISALLOW_COPY_AND_ASSIGN(Compositor); | 458 DISALLOW_COPY_AND_ASSIGN(Compositor); |
445 }; | 459 }; |
446 | 460 |
447 } // namespace ui | 461 } // namespace ui |
448 | 462 |
449 #endif // UI_COMPOSITOR_COMPOSITOR_H_ | 463 #endif // UI_COMPOSITOR_COMPOSITOR_H_ |
OLD | NEW |