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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 static void SetInstance(ContextFactory* instance); | 75 static void SetInstance(ContextFactory* instance); |
76 | 76 |
77 // Creates an output surface for the given compositor. The factory may keep | 77 // Creates an output surface for the given compositor. The factory may keep |
78 // per-compositor data (e.g. a shared context), that needs to be cleaned up | 78 // per-compositor data (e.g. a shared context), that needs to be cleaned up |
79 // by calling RemoveCompositor when the compositor gets destroyed. | 79 // by calling RemoveCompositor when the compositor gets destroyed. |
80 virtual cc::OutputSurface* CreateOutputSurface( | 80 virtual cc::OutputSurface* CreateOutputSurface( |
81 Compositor* compositor) = 0; | 81 Compositor* compositor) = 0; |
82 | 82 |
83 // Creates a context used for offscreen rendering. This context can be shared | 83 // Creates a context used for offscreen rendering. This context can be shared |
84 // with all compositors. | 84 // with all compositors. |
85 virtual WebKit::WebGraphicsContext3D* CreateOffscreenContext() = 0; | 85 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() = 0; |
86 | 86 |
87 // Creates a reflector that copies the content of the |mirrored_compositor| | 87 // Creates a reflector that copies the content of the |mirrored_compositor| |
88 // onto |mirroing_layer|. | 88 // onto |mirroing_layer|. |
89 virtual scoped_refptr<Reflector> CreateReflector( | 89 virtual scoped_refptr<Reflector> CreateReflector( |
90 Compositor* mirrored_compositor, | 90 Compositor* mirrored_compositor, |
91 Layer* mirroring_layer) = 0; | 91 Layer* mirroring_layer) = 0; |
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 }; | 102 }; |
103 | 103 |
104 // The default factory that creates in-process contexts. | 104 // The default factory that creates in-process contexts. |
105 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { | 105 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { |
106 public: | 106 public: |
107 DefaultContextFactory(); | 107 DefaultContextFactory(); |
108 virtual ~DefaultContextFactory(); | 108 virtual ~DefaultContextFactory(); |
109 | 109 |
110 // ContextFactory implementation | 110 // ContextFactory implementation |
111 virtual cc::OutputSurface* CreateOutputSurface( | 111 virtual cc::OutputSurface* CreateOutputSurface( |
112 Compositor* compositor) OVERRIDE; | 112 Compositor* compositor) OVERRIDE; |
113 virtual WebKit::WebGraphicsContext3D* CreateOffscreenContext() OVERRIDE; | 113 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() |
| 114 OVERRIDE; |
114 | 115 |
115 virtual scoped_refptr<Reflector> CreateReflector( | 116 virtual scoped_refptr<Reflector> CreateReflector( |
116 Compositor* compositor, | 117 Compositor* compositor, |
117 Layer* layer) OVERRIDE; | 118 Layer* layer) OVERRIDE; |
118 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 119 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
119 | 120 |
120 virtual scoped_refptr<cc::ContextProvider> | 121 virtual scoped_refptr<cc::ContextProvider> |
121 OffscreenContextProviderForMainThread() OVERRIDE; | 122 OffscreenContextProviderForMainThread() OVERRIDE; |
122 virtual scoped_refptr<cc::ContextProvider> | 123 virtual scoped_refptr<cc::ContextProvider> |
123 OffscreenContextProviderForCompositorThread() OVERRIDE; | 124 OffscreenContextProviderForCompositorThread() OVERRIDE; |
124 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; | 125 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; |
125 | 126 |
126 bool Initialize(); | 127 bool Initialize(); |
127 | 128 |
128 private: | 129 private: |
129 WebKit::WebGraphicsContext3D* CreateContextCommon( | 130 scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( |
130 Compositor* compositor, | 131 Compositor* compositor, |
131 bool offscreen); | 132 bool offscreen); |
132 | 133 |
133 scoped_refptr<ContextProviderFromContextFactory> | 134 scoped_refptr<ContextProviderFromContextFactory> |
134 offscreen_contexts_main_thread_; | 135 offscreen_contexts_main_thread_; |
135 scoped_refptr<ContextProviderFromContextFactory> | 136 scoped_refptr<ContextProviderFromContextFactory> |
136 offscreen_contexts_compositor_thread_; | 137 offscreen_contexts_compositor_thread_; |
137 | 138 |
138 DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory); | 139 DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory); |
139 }; | 140 }; |
140 | 141 |
141 // The factory that creates test contexts. | 142 // The factory that creates test contexts. |
142 class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { | 143 class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { |
143 public: | 144 public: |
144 TestContextFactory(); | 145 TestContextFactory(); |
145 virtual ~TestContextFactory(); | 146 virtual ~TestContextFactory(); |
146 | 147 |
147 // ContextFactory implementation | 148 // ContextFactory implementation |
148 virtual cc::OutputSurface* CreateOutputSurface( | 149 virtual cc::OutputSurface* CreateOutputSurface( |
149 Compositor* compositor) OVERRIDE; | 150 Compositor* compositor) OVERRIDE; |
150 virtual WebKit::WebGraphicsContext3D* CreateOffscreenContext() OVERRIDE; | 151 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() |
| 152 OVERRIDE; |
151 | 153 |
152 virtual scoped_refptr<Reflector> CreateReflector( | 154 virtual scoped_refptr<Reflector> CreateReflector( |
153 Compositor* mirrored_compositor, | 155 Compositor* mirrored_compositor, |
154 Layer* mirroring_layer) OVERRIDE; | 156 Layer* mirroring_layer) OVERRIDE; |
155 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 157 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
156 | 158 |
157 virtual scoped_refptr<cc::ContextProvider> | 159 virtual scoped_refptr<cc::ContextProvider> |
158 OffscreenContextProviderForMainThread() OVERRIDE; | 160 OffscreenContextProviderForMainThread() OVERRIDE; |
159 virtual scoped_refptr<cc::ContextProvider> | 161 virtual scoped_refptr<cc::ContextProvider> |
160 OffscreenContextProviderForCompositorThread() OVERRIDE; | 162 OffscreenContextProviderForCompositorThread() OVERRIDE; |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 bool disable_schedule_composite_; | 455 bool disable_schedule_composite_; |
454 | 456 |
455 CompositorLock* compositor_lock_; | 457 CompositorLock* compositor_lock_; |
456 | 458 |
457 DISALLOW_COPY_AND_ASSIGN(Compositor); | 459 DISALLOW_COPY_AND_ASSIGN(Compositor); |
458 }; | 460 }; |
459 | 461 |
460 } // namespace ui | 462 } // namespace ui |
461 | 463 |
462 #endif // UI_COMPOSITOR_COMPOSITOR_H_ | 464 #endif // UI_COMPOSITOR_COMPOSITOR_H_ |
OLD | NEW |