Index: content/browser/aura/browser_compositor_output_surface.h |
diff --git a/content/browser/aura/browser_compositor_output_surface.h b/content/browser/aura/browser_compositor_output_surface.h |
index f9ec3c8d9d5a9b2ea1a54e78a517e8b0d9f1532d..79f757a56a27204e6bcdbeea8c959d95bd867533 100644 |
--- a/content/browser/aura/browser_compositor_output_surface.h |
+++ b/content/browser/aura/browser_compositor_output_surface.h |
@@ -9,9 +9,14 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/threading/non_thread_safe.h" |
#include "cc/output/output_surface.h" |
+#include "content/common/content_export.h" |
namespace base { class MessageLoopProxy; } |
+namespace cc { |
+class SoftwareOutputDevice; |
+} |
+ |
namespace ui { class Compositor; } |
namespace content { |
@@ -19,39 +24,49 @@ class ContextProviderCommandBuffer; |
class ReflectorImpl; |
class WebGraphicsContext3DCommandBufferImpl; |
-// Adapts a WebGraphicsContext3DCommandBufferImpl into a |
-// cc::OutputSurface that also handles vsync parameter updates |
-// arriving from the GPU process. |
-class BrowserCompositorOutputSurface |
+class CONTENT_EXPORT BrowserCompositorOutputSurface |
: public cc::OutputSurface, |
public base::NonThreadSafe { |
public: |
- BrowserCompositorOutputSurface( |
- const scoped_refptr<ContextProviderCommandBuffer>& context, |
- int surface_id, |
- IDMap<BrowserCompositorOutputSurface>* output_surface_map, |
- base::MessageLoopProxy* compositor_message_loop, |
- base::WeakPtr<ui::Compositor> compositor); |
- |
virtual ~BrowserCompositorOutputSurface(); |
// cc::OutputSurface implementation. |
virtual bool BindToClient(cc::OutputSurfaceClient* client) OVERRIDE; |
virtual void Reshape(gfx::Size size, float scale_factor) OVERRIDE; |
- virtual void SwapBuffers(cc::CompositorFrame* frame) OVERRIDE; |
void OnUpdateVSyncParameters(base::TimeTicks timebase, |
base::TimeDelta interval); |
void SetReflector(ReflectorImpl* reflector); |
- private: |
+ protected: |
+ // Constructor used by the accelerated implementation. |
+ BrowserCompositorOutputSurface( |
+ const scoped_refptr<ContextProviderCommandBuffer>& context, |
+ int surface_id, |
+ IDMap<BrowserCompositorOutputSurface>* output_surface_map, |
+ base::MessageLoopProxy* compositor_message_loop, |
+ base::WeakPtr<ui::Compositor> compositor); |
+ |
+ // Constructor used by the software implementation. |
+ BrowserCompositorOutputSurface( |
+ scoped_ptr<cc::SoftwareOutputDevice> software_device, |
+ int surface_id, |
+ IDMap<BrowserCompositorOutputSurface>* output_surface_map, |
+ base::MessageLoopProxy* compositor_message_loop, |
+ base::WeakPtr<ui::Compositor> compositor); |
+ |
int surface_id_; |
IDMap<BrowserCompositorOutputSurface>* output_surface_map_; |
scoped_refptr<base::MessageLoopProxy> compositor_message_loop_; |
base::WeakPtr<ui::Compositor> compositor_; |
scoped_refptr<ReflectorImpl> reflector_; |
+ |
+ private: |
+ void Initialize(); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BrowserCompositorOutputSurface); |
}; |
} // namespace content |