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

Unified Diff: components/display_compositor/gpu_root_compositor_frame_sink.h

Issue 2710703005: GpuDisplayCompositorFrameSink => GpuRootCompositorFrameSink (Closed)
Patch Set: Addressed Dana's comments Created 3 years, 10 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: components/display_compositor/gpu_root_compositor_frame_sink.h
diff --git a/components/display_compositor/gpu_compositor_frame_sink.h b/components/display_compositor/gpu_root_compositor_frame_sink.h
similarity index 50%
copy from components/display_compositor/gpu_compositor_frame_sink.h
copy to components/display_compositor/gpu_root_compositor_frame_sink.h
index c724539d1067c63c9a990a5b785689eb5eb284bd..a978eb79d659a15e8d334e02160366595212d4e2 100644
--- a/components/display_compositor/gpu_compositor_frame_sink.h
+++ b/components/display_compositor/gpu_root_compositor_frame_sink.h
@@ -1,38 +1,58 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
+// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_
-#define COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_
+#ifndef COMPONENTS_DISPLAY_COMPOSITOR_GPU_ROOT_COMPOSITOR_FRAME_SINK_H_
+#define COMPONENTS_DISPLAY_COMPOSITOR_GPU_ROOT_COMPOSITOR_FRAME_SINK_H_
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
#include "cc/ipc/display_compositor.mojom.h"
#include "cc/ipc/mojo_compositor_frame_sink.mojom.h"
-#include "cc/surfaces/compositor_frame_sink_support.h"
#include "cc/surfaces/compositor_frame_sink_support_client.h"
+#include "cc/surfaces/display_client.h"
#include "components/display_compositor/display_compositor_export.h"
#include "components/display_compositor/gpu_compositor_frame_sink_delegate.h"
+#include "mojo/public/cpp/bindings/associated_binding.h"
#include "mojo/public/cpp/bindings/binding.h"
+namespace cc {
+class BeginFrameSource;
+class CompositorFrameSinkSupport;
+class Display;
+class FrameSinkId;
+class SurfaceManager;
+}
+
namespace display_compositor {
-// Server side representation of a WindowSurface.
-class DISPLAY_COMPOSITOR_EXPORT GpuCompositorFrameSink
+class GpuCompositorFrameSinkDelegate;
+
+class DISPLAY_COMPOSITOR_EXPORT GpuRootCompositorFrameSink
: public NON_EXPORTED_BASE(cc::CompositorFrameSinkSupportClient),
public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSink),
- public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSinkPrivate) {
+ public NON_EXPORTED_BASE(cc::mojom::MojoCompositorFrameSinkPrivate),
+ public NON_EXPORTED_BASE(cc::mojom::DisplayPrivate),
+ public NON_EXPORTED_BASE(cc::DisplayClient) {
public:
- GpuCompositorFrameSink(
+ GpuRootCompositorFrameSink(
GpuCompositorFrameSinkDelegate* delegate,
- std::unique_ptr<cc::CompositorFrameSinkSupport>,
+ cc::SurfaceManager* surface_manager,
+ const cc::FrameSinkId& frame_sink_id,
+ std::unique_ptr<cc::Display> display,
+ std::unique_ptr<cc::BeginFrameSource> begin_frame_source,
+ cc::mojom::MojoCompositorFrameSinkAssociatedRequest request,
cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request,
- cc::mojom::MojoCompositorFrameSinkClientPtr client);
+ cc::mojom::MojoCompositorFrameSinkClientPtr client,
+ cc::mojom::DisplayPrivateAssociatedRequest display_private_request);
- ~GpuCompositorFrameSink() override;
+ ~GpuRootCompositorFrameSink() override;
+
+ // cc::mojom::DisplayPrivate:
+ void SetDisplayVisible(bool visible) override;
+ void ResizeDisplay(const gfx::Size& size) override;
+ void SetDisplayColorSpace(const gfx::ColorSpace& color_space) override;
+ void SetOutputIsSecure(bool secure) override;
+ void SetLocalSurfaceId(const cc::LocalSurfaceId& local_surface_id,
+ float scale_factor) override;
// cc::mojom::MojoCompositorFrameSink:
void EvictFrame() override;
@@ -50,31 +70,44 @@ class DISPLAY_COMPOSITOR_EXPORT GpuCompositorFrameSink
void RequestCopyOfSurface(
std::unique_ptr<cc::CopyOutputRequest> request) override;
- protected:
- void OnClientConnectionLost();
- void OnPrivateConnectionLost();
-
- GpuCompositorFrameSinkDelegate* const delegate_;
- std::unique_ptr<cc::CompositorFrameSinkSupport> support_;
-
private:
- // cc::CompositorFrameSinkSupportClient implementation:
+ // cc::DisplayClient:
+ void DisplayOutputSurfaceLost() override;
+ void DisplayWillDrawAndSwap(bool will_draw_and_swap,
+ const cc::RenderPassList& render_passes) override;
+ void DisplayDidDrawAndSwap() override;
+
+ // cc::CompositorFrameSinkSupportClient:
void DidReceiveCompositorFrameAck() override;
void OnBeginFrame(const cc::BeginFrameArgs& args) override;
void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
void WillDrawSurface(const cc::LocalSurfaceId& local_surface_id,
const gfx::Rect& damage_rect) override;
+ void OnClientConnectionLost();
+ void OnPrivateConnectionLost();
+
+ GpuCompositorFrameSinkDelegate* const delegate_;
+ std::unique_ptr<cc::CompositorFrameSinkSupport> support_;
+
+ // GpuRootCompositorFrameSink holds a Display and its BeginFrameSource if
+ // it was created with a non-null gpu::SurfaceHandle.
+ std::unique_ptr<cc::BeginFrameSource> display_begin_frame_source_;
+ std::unique_ptr<cc::Display> display_;
+
bool client_connection_lost_ = false;
bool private_connection_lost_ = false;
cc::mojom::MojoCompositorFrameSinkClientPtr client_;
+ mojo::AssociatedBinding<cc::mojom::MojoCompositorFrameSink>
+ compositor_frame_sink_binding_;
mojo::Binding<cc::mojom::MojoCompositorFrameSinkPrivate>
compositor_frame_sink_private_binding_;
+ mojo::AssociatedBinding<cc::mojom::DisplayPrivate> display_private_binding_;
- DISALLOW_COPY_AND_ASSIGN(GpuCompositorFrameSink);
+ DISALLOW_COPY_AND_ASSIGN(GpuRootCompositorFrameSink);
};
} // namespace display_compositor
-#endif // COMPONENTS_DISPLAY_COMPOSITOR_GPU_COMPOSITOR_FRAME_SINK_H_
+#endif // COMPONENTS_DISPLAY_COMPOSITOR_GPU_ROOT_COMPOSITOR_FRAME_SINK_H_

Powered by Google App Engine
This is Rietveld 408576698