OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ | |
6 #define CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ | |
7 | |
8 #include "cc/output/output_surface.h" | |
9 #include "cc/surfaces/surface_factory.h" | |
10 #include "cc/surfaces/surface_factory_client.h" | |
11 #include "cc/surfaces/surface_id_allocator.h" | |
12 #include "cc/surfaces/surfaces_export.h" | |
13 | |
14 namespace cc { | |
15 class Display; | |
16 class OnscreenDisplayClient; | |
17 class SurfaceManager; | |
18 | |
19 // This class is maps a compositor OutputSurface to the surface system's Display | |
20 // concept, allowing a compositor client to submit frames for a native root | |
21 // window or physical display. | |
22 class CC_SURFACES_EXPORT SurfaceDisplayOutputSurface | |
23 : public OutputSurface, | |
24 public SurfaceFactoryClient { | |
25 public: | |
26 // The underlying Display and SurfaceManager must outlive this class. | |
27 SurfaceDisplayOutputSurface( | |
28 SurfaceManager* surface_manager, | |
29 SurfaceIdAllocator* allocator, | |
30 const scoped_refptr<ContextProvider>& context_provider); | |
31 ~SurfaceDisplayOutputSurface() override; | |
32 | |
33 void set_display_client(OnscreenDisplayClient* display_client) { | |
34 display_client_ = display_client; | |
35 } | |
36 SurfaceFactory* factory() { return &factory_; } | |
37 void ReceivedVSyncParameters(base::TimeTicks timebase, | |
38 base::TimeDelta interval); | |
39 | |
40 // OutputSurface implementation. | |
41 void SwapBuffers(CompositorFrame* frame) override; | |
42 bool BindToClient(OutputSurfaceClient* client) override; | |
43 void ForceReclaimResources() override; | |
44 | |
45 // SurfaceFactoryClient implementation. | |
46 void ReturnResources(const ReturnedResourceArray& resources) override; | |
47 | |
48 private: | |
49 void SwapBuffersComplete(SurfaceDrawStatus drawn); | |
50 | |
51 OnscreenDisplayClient* display_client_; | |
52 SurfaceManager* surface_manager_; | |
53 SurfaceFactory factory_; | |
54 gfx::Size display_size_; | |
55 SurfaceId surface_id_; | |
56 SurfaceIdAllocator* allocator_; | |
57 | |
58 DISALLOW_COPY_AND_ASSIGN(SurfaceDisplayOutputSurface); | |
59 }; | |
60 | |
61 } // namespace cc | |
62 | |
63 #endif // CC_SURFACES_SURFACE_DISPLAY_OUTPUT_SURFACE_H_ | |
OLD | NEW |