Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: services/ui/surfaces/gpu_compositor_frame_sink.h

Issue 2651213004: Revert of Decouple GpuCompositorFrameSink from DisplayCompositor (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 SERVICES_UI_SURFACES_GPU_COMPOSITOR_FRAME_SINK_H_
6 #define SERVICES_UI_SURFACES_GPU_COMPOSITOR_FRAME_SINK_H_
7
8 #include <memory>
9 #include <vector>
10
11 #include "base/macros.h"
12 #include "base/memory/weak_ptr.h"
13 #include "cc/ipc/display_compositor.mojom.h"
14 #include "cc/ipc/mojo_compositor_frame_sink.mojom.h"
15 #include "cc/surfaces/compositor_frame_sink_support.h"
16 #include "cc/surfaces/compositor_frame_sink_support_client.h"
17 #include "cc/surfaces/referenced_surface_tracker.h"
18 #include "mojo/public/cpp/bindings/binding.h"
19
20 namespace cc {
21 class Display;
22 }
23
24 namespace ui {
25
26 class DisplayCompositor;
27
28 // Server side representation of a WindowSurface.
29 class GpuCompositorFrameSink
30 : public cc::CompositorFrameSinkSupportClient,
31 public cc::mojom::MojoCompositorFrameSink,
32 public cc::mojom::MojoCompositorFrameSinkPrivate {
33 public:
34 GpuCompositorFrameSink(
35 DisplayCompositor* display_compositor,
36 const cc::FrameSinkId& frame_sink_id,
37 std::unique_ptr<cc::Display> display,
38 std::unique_ptr<cc::BeginFrameSource> begin_frame_source,
39 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request,
40 cc::mojom::MojoCompositorFrameSinkClientPtr client);
41
42 ~GpuCompositorFrameSink() override;
43
44 // cc::mojom::MojoCompositorFrameSink:
45 void EvictFrame() override;
46 void SetNeedsBeginFrame(bool needs_begin_frame) override;
47 void SubmitCompositorFrame(const cc::LocalFrameId& local_frame_id,
48 cc::CompositorFrame frame) override;
49 void Require(const cc::LocalFrameId& local_frame_id,
50 const cc::SurfaceSequence& sequence) override;
51 void Satisfy(const cc::SurfaceSequence& sequence) override;
52
53 // cc::mojom::MojoCompositorFrameSinkPrivate:
54 void AddChildFrameSink(const cc::FrameSinkId& child_frame_sink_id) override;
55 void RemoveChildFrameSink(
56 const cc::FrameSinkId& child_frame_sink_id) override;
57
58 protected:
59 void OnClientConnectionLost();
60 void OnPrivateConnectionLost();
61
62 DisplayCompositor* const display_compositor_;
63 cc::CompositorFrameSinkSupport support_;
64
65 private:
66 // cc::CompositorFrameSinkSupportClient implementation:
67 void DidReceiveCompositorFrameAck() override;
68 void OnBeginFrame(const cc::BeginFrameArgs& args) override;
69 void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
70 void WillDrawSurface() override;
71
72 // Track the surface references for the surface corresponding to this
73 // compositor frame sink.
74 cc::ReferencedSurfaceTracker surface_tracker_;
75
76 bool client_connection_lost_ = false;
77 bool private_connection_lost_ = false;
78
79 cc::mojom::MojoCompositorFrameSinkClientPtr client_;
80 mojo::Binding<cc::mojom::MojoCompositorFrameSinkPrivate>
81 compositor_frame_sink_private_binding_;
82
83 DISALLOW_COPY_AND_ASSIGN(GpuCompositorFrameSink);
84 };
85
86 } // namespace ui
87
88 #endif // SERVICES_UI_SURFACES_GPU_COMPOSITOR_FRAME_SINK_H_
OLDNEW
« no previous file with comments | « services/ui/surfaces/display_compositor.cc ('k') | services/ui/surfaces/gpu_compositor_frame_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698