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

Unified Diff: services/ui/public/cpp/window_compositor_frame_sink.h

Issue 2429173005: Mus+Ash: Replace (Server)WindowSurface with (Server)WindowCompositorFrameSink (Closed)
Patch Set: ui::CompositorFrameSink => ui::WindowCompositorFrameSink Created 4 years, 2 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/public/cpp/window_compositor_frame_sink.h
diff --git a/services/ui/public/cpp/window_compositor_frame_sink.h b/services/ui/public/cpp/window_compositor_frame_sink.h
new file mode 100644
index 0000000000000000000000000000000000000000..7f969643fb28ecefddebc7eecf208b80be191ffd
--- /dev/null
+++ b/services/ui/public/cpp/window_compositor_frame_sink.h
@@ -0,0 +1,92 @@
+// Copyright 2014 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 SERVICES_UI_PUBLIC_CPP_WINDOW_COMPOSITOR_FRAME_SINK_H_
+#define SERVICES_UI_PUBLIC_CPP_WINDOW_COMPOSITOR_FRAME_SINK_H_
+
+#include "base/macros.h"
+#include "cc/ipc/mojo_compositor_frame_sink.mojom.h"
+#include "cc/output/compositor_frame_sink.h"
+#include "cc/output/context_provider.h"
+#include "cc/scheduler/begin_frame_source.h"
+#include "cc/surfaces/surface_id.h"
+#include "mojo/public/cpp/bindings/binding.h"
+
+namespace gpu {
+class GpuChannelHost;
+}
+
+namespace ui {
+
+class WindowCompositorFrameSinkBinding;
+
+class WindowCompositorFrameSink
+ : public cc::CompositorFrameSink,
+ public cc::mojom::MojoCompositorFrameSinkClient {
+ public:
+ // static
+ static std::unique_ptr<WindowCompositorFrameSink> Create(
+ scoped_refptr<cc::ContextProvider> context_provider,
+ std::unique_ptr<WindowCompositorFrameSinkBinding>*
+ compositor_frame_sink_binding);
+
+ ~WindowCompositorFrameSink() override;
+
+ // cc::CompositorFrameSink implementation.
+ bool BindToClient(cc::CompositorFrameSinkClient* client) override;
+ void DetachFromClient() override;
+ void SubmitCompositorFrame(cc::CompositorFrame frame) override;
+
+ private:
+ friend class Window;
+
+ WindowCompositorFrameSink(
+ scoped_refptr<cc::ContextProvider> context_provider,
+ mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSink>
+ compositor_frame_sink_info,
+ cc::mojom::MojoCompositorFrameSinkClientRequest client_request);
+
+ // cc::mojom::MojoCompositorFrameSinkClient implementation:
+ void DidReceiveCompositorFrameAck() override;
+ void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
+
+ std::unique_ptr<cc::BeginFrameSource> begin_frame_source_;
+ mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSink>
+ compositor_frame_sink_info_;
+ mojo::InterfaceRequest<cc::mojom::MojoCompositorFrameSinkClient>
+ client_request_;
+ cc::mojom::MojoCompositorFrameSinkPtr compositor_frame_sink_;
+ std::unique_ptr<mojo::Binding<cc::mojom::MojoCompositorFrameSinkClient>>
+ client_binding_;
+ std::unique_ptr<base::ThreadChecker> thread_checker_;
+
+ DISALLOW_COPY_AND_ASSIGN(WindowCompositorFrameSink);
+};
+
+// A WindowCompositorFrameSinkBinding is a bundle of mojo interfaces that are to
+// be used by or implemented by the Mus window server when passed into
+// Window::AttachCompositorFrameSink. WindowCompositorFrameSinkBinding has no
+// standalone functionality.
rjkroege 2016/10/20 22:22:18 can you say why? How it works, expand... etc.?
Fady Samuel 2016/10/21 20:53:27 Done.
+class WindowCompositorFrameSinkBinding {
+ public:
+ ~WindowCompositorFrameSinkBinding();
+
+ private:
+ friend class Window;
+ friend class WindowCompositorFrameSink;
+
+ WindowCompositorFrameSinkBinding(
+ cc::mojom::MojoCompositorFrameSinkRequest compositor_frame_sink_request,
+ mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSinkClient>
+ compositor_frame_sink_client);
+
+ cc::mojom::MojoCompositorFrameSinkRequest compositor_frame_sink_request_;
+ mojo::InterfacePtrInfo<cc::mojom::MojoCompositorFrameSinkClient>
+ compositor_frame_sink_client_;
+
+ DISALLOW_COPY_AND_ASSIGN(WindowCompositorFrameSinkBinding);
+};
+} // namespace ui
+
+#endif // SERVICES_UI_PUBLIC_CPP_WINDOW_COMPOSITOR_FRAME_SINK_H_

Powered by Google App Engine
This is Rietveld 408576698