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 COMPONENTS_MUS_SURFACES_DIRECT_OUTPUT_SURFACE_H_ | |
6 #define COMPONENTS_MUS_SURFACES_DIRECT_OUTPUT_SURFACE_H_ | |
7 | |
8 #include <memory> | |
9 | |
10 #include "cc/output/output_surface.h" | |
11 #include "components/mus/surfaces/surfaces_context_provider.h" | |
12 #include "components/mus/surfaces/surfaces_context_provider_delegate.h" | |
13 | |
14 namespace cc { | |
15 class CompositorFrame; | |
16 class SyntheticBeginFrameSource; | |
17 } | |
18 | |
19 namespace mus { | |
20 | |
21 // An OutputSurface implementation that directly draws and | |
22 // swaps to an actual GL surface. | |
23 class DirectOutputSurface : public cc::OutputSurface, | |
24 public SurfacesContextProviderDelegate { | |
25 public: | |
26 explicit DirectOutputSurface( | |
27 scoped_refptr<SurfacesContextProvider> context_provider, | |
28 cc::SyntheticBeginFrameSource* synthetic_begin_frame_source); | |
29 ~DirectOutputSurface() override; | |
30 | |
31 // cc::OutputSurface implementation | |
32 bool BindToClient(cc::OutputSurfaceClient* client) override; | |
33 void SwapBuffers(cc::CompositorFrame frame) override; | |
34 uint32_t GetFramebufferCopyTextureFormat() override; | |
35 | |
36 // SurfacesContextProviderDelegate implementation | |
37 void OnVSyncParametersUpdated(const base::TimeTicks& timebase, | |
38 const base::TimeDelta& interval) override; | |
39 | |
40 private: | |
41 cc::SyntheticBeginFrameSource* const synthetic_begin_frame_source_; | |
42 base::WeakPtrFactory<DirectOutputSurface> weak_ptr_factory_; | |
43 }; | |
44 | |
45 } // namespace mus | |
46 | |
47 #endif // COMPONENTS_MUS_SURFACES_DIRECT_OUTPUT_SURFACE_H_ | |
OLD | NEW |