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

Unified Diff: services/ui/ws/frame_generator.h

Issue 2738923002: Add DisplayClientCompositorFrameSink (Closed)
Patch Set: Updated BeginFrame requests logic and other fixes from fsamuel@ Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: services/ui/ws/frame_generator.h
diff --git a/services/ui/ws/frame_generator.h b/services/ui/ws/frame_generator.h
index 4372581d5c4f4afbe0b2feabb3b1a4300a477bc5..cd760f00657e66a7a0796eef522ded1aed2bacb4 100644
--- a/services/ui/ws/frame_generator.h
+++ b/services/ui/ws/frame_generator.h
@@ -10,6 +10,8 @@
#include "base/macros.h"
#include "base/timer/timer.h"
#include "cc/ipc/display_compositor.mojom.h"
+#include "cc/output/compositor_frame_sink_client.h"
+#include "cc/scheduler/begin_frame_source.h"
#include "cc/surfaces/frame_sink_id.h"
#include "cc/surfaces/local_surface_id_allocator.h"
#include "cc/surfaces/surface_id.h"
@@ -22,6 +24,7 @@
#include "ui/gfx/native_widget_types.h"
namespace cc {
+class CompositorFrameSink;
class RenderPass;
}
@@ -37,11 +40,14 @@ class ServerWindow;
// Responsible for redrawing the display in response to the redraw requests by
// submitting CompositorFrames to the owned CompositorFrameSink.
-class FrameGenerator : public cc::mojom::MojoCompositorFrameSinkClient {
+class FrameGenerator : public cc::CompositorFrameSinkClient,
+ public cc::BeginFrameObserver {
public:
- FrameGenerator(FrameGeneratorDelegate* delegate,
- ServerWindow* root_window,
- gfx::AcceleratedWidget widget);
+ FrameGenerator(
+ FrameGeneratorDelegate* delegate,
+ ServerWindow* root_window,
+ gfx::AcceleratedWidget widget,
Fady Samuel 2017/03/10 18:37:57 Remove this?
Alex Z. 2017/03/10 19:08:39 Done.
+ std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink);
~FrameGenerator() override;
void SetDeviceScaleFactor(float device_scale_factor);
@@ -54,12 +60,24 @@ class FrameGenerator : public cc::mojom::MojoCompositorFrameSinkClient {
private:
friend class ui::ws::test::FrameGeneratorTest;
Fady Samuel 2017/03/10 18:37:57 Delete this.
Alex Z. 2017/03/10 19:08:39 Done.
- // cc::mojom::MojoCompositorFrameSinkClient implementation:
- void DidReceiveCompositorFrameAck() override;
- void OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) override;
+ // cc::CompositorFrameSinkClient implementation:
+ void SetBeginFrameSource(cc::BeginFrameSource* source) override;
void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
- void WillDrawSurface(const cc::LocalSurfaceId& local_surface_id,
- const gfx::Rect& damage_rect) override;
+ void SetTreeActivationCallback(const base::Closure& callback) override;
+ void DidReceiveCompositorFrameAck() override;
+ void DidLoseCompositorFrameSink() override;
+ void OnDraw(const gfx::Transform& transform,
+ const gfx::Rect& viewport,
+ bool resourceless_software_draw) override;
+ void SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) override;
+ void SetExternalTilePriorityConstraints(
+ const gfx::Rect& viewport_rect,
+ const gfx::Transform& transform) override;
+
+ // cc::BeginFrameObserver implementation:
+ void OnBeginFrame(const cc::BeginFrameArgs& args) override;
+ const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override;
+ void OnBeginFrameSourcePausedChanged(bool paused) override;
// Generates the CompositorFrame.
cc::CompositorFrame GenerateCompositorFrame(const gfx::Rect& output_rect);
@@ -68,20 +86,19 @@ class FrameGenerator : public cc::mojom::MojoCompositorFrameSinkClient {
// the provided cc::RenderPass.
void DrawWindow(cc::RenderPass* pass);
+ void SetNeedsBeginFrame(bool needs_begin_frame);
+
FrameGeneratorDelegate* delegate_;
ServerWindow* const root_window_;
float device_scale_factor_ = 1.f;
- gfx::Size last_submitted_frame_size_;
- cc::LocalSurfaceId local_surface_id_;
- cc::LocalSurfaceIdAllocator id_allocator_;
- cc::mojom::MojoCompositorFrameSinkAssociatedPtr compositor_frame_sink_;
- cc::mojom::DisplayPrivateAssociatedPtr display_private_;
+ std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink_;
+ cc::BeginFrameArgs last_begin_frame_args_;
+ cc::BeginFrameSource* begin_frame_source_ = nullptr;
+ bool observing_begin_frames_ = false;
cc::SurfaceInfo window_manager_surface_info_;
- mojo::Binding<cc::mojom::MojoCompositorFrameSinkClient> binding_;
-
DISALLOW_COPY_AND_ASSIGN(FrameGenerator);
};

Powered by Google App Engine
This is Rietveld 408576698