| 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..baf047913dc4f5dd9548605317820170054c7b86 100644
|
| --- a/services/ui/ws/frame_generator.h
|
| +++ b/services/ui/ws/frame_generator.h
|
| @@ -10,38 +10,36 @@
|
| #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"
|
| #include "cc/surfaces/surface_reference.h"
|
| #include "services/ui/public/interfaces/window_tree_constants.mojom.h"
|
| -#include "services/ui/ws/ids.h"
|
| -#include "services/ui/ws/server_window_delegate.h"
|
| -#include "services/ui/ws/server_window_tracker.h"
|
| #include "ui/gfx/geometry/rect.h"
|
| #include "ui/gfx/native_widget_types.h"
|
|
|
| namespace cc {
|
| +class CompositorFrameSink;
|
| class RenderPass;
|
| }
|
|
|
| namespace ui {
|
| namespace ws {
|
|
|
| -namespace test {
|
| -class FrameGeneratorTest;
|
| -}
|
| -
|
| class FrameGeneratorDelegate;
|
| 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,
|
| + std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink);
|
| ~FrameGenerator() override;
|
|
|
| void SetDeviceScaleFactor(float device_scale_factor);
|
| @@ -52,14 +50,24 @@ class FrameGenerator : public cc::mojom::MojoCompositorFrameSinkClient {
|
| void OnWindowDamaged();
|
|
|
| private:
|
| - friend class ui::ws::test::FrameGeneratorTest;
|
| -
|
| - // 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 +76,21 @@ class FrameGenerator : public cc::mojom::MojoCompositorFrameSinkClient {
|
| // the provided cc::RenderPass.
|
| void DrawWindow(cc::RenderPass* pass);
|
|
|
| + // SetNeedsBeginFrame sets observing_begin_frames_ and add/remove
|
| + // FrameGenerator as an observer to/from begin_frame_source_ accordingly.
|
| + 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);
|
| };
|
|
|
|
|