Index: cc/surfaces/surface_display_output_surface.h |
diff --git a/cc/surfaces/surface_display_output_surface.h b/cc/surfaces/surface_display_output_surface.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..99afda636a240b06f59754b588a737d4a0eab003 |
--- /dev/null |
+++ b/cc/surfaces/surface_display_output_surface.h |
@@ -0,0 +1,63 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ |
+#define CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ |
+ |
+#include "cc/output/output_surface.h" |
+#include "cc/surfaces/surface_factory.h" |
+#include "cc/surfaces/surface_factory_client.h" |
+#include "cc/surfaces/surface_id_allocator.h" |
+#include "cc/surfaces/surfaces_export.h" |
+ |
+namespace cc { |
+class Display; |
+class OnscreenDisplayClient; |
+class SurfaceManager; |
+ |
+// This class is maps a compositor OutputSurface to the surface system's Display |
+// concept, allowing a compositor client to submit frames for a native root |
+// window or physical display. |
+class CC_SURFACES_EXPORT SurfaceDisplayOutputSurface |
+ : public OutputSurface, |
+ public SurfaceFactoryClient { |
+ public: |
+ // The underlying Display and SurfaceManager must outlive this class. |
+ SurfaceDisplayOutputSurface( |
+ SurfaceManager* surface_manager, |
+ SurfaceIdAllocator* allocator, |
+ const scoped_refptr<ContextProvider>& context_provider); |
+ ~SurfaceDisplayOutputSurface() override; |
+ |
+ void set_display_client(OnscreenDisplayClient* display_client) { |
+ display_client_ = display_client; |
+ } |
+ SurfaceFactory* factory() { return &factory_; } |
+ void ReceivedVSyncParameters(base::TimeTicks timebase, |
+ base::TimeDelta interval); |
+ |
+ // OutputSurface implementation. |
+ void SwapBuffers(CompositorFrame* frame) override; |
+ bool BindToClient(OutputSurfaceClient* client) override; |
+ void ForceReclaimResources() override; |
+ |
+ // SurfaceFactoryClient implementation. |
+ void ReturnResources(const ReturnedResourceArray& resources) override; |
+ |
+ private: |
+ void SwapBuffersComplete(SurfaceDrawStatus drawn); |
+ |
+ OnscreenDisplayClient* display_client_; |
+ SurfaceManager* surface_manager_; |
+ SurfaceFactory factory_; |
+ gfx::Size display_size_; |
+ SurfaceId surface_id_; |
+ SurfaceIdAllocator* allocator_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SurfaceDisplayOutputSurface); |
+}; |
+ |
+} // namespace cc |
+ |
+#endif // CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ |