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

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

Issue 2453013002: Mus: Remove dependency on ServerWindowCompositorFrameSink from FrameGenerator (Closed)
Patch Set: Rebased 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/ws/server_window_compositor_frame_sink_manager.h
diff --git a/services/ui/ws/server_window_compositor_frame_sink_manager.h b/services/ui/ws/server_window_compositor_frame_sink_manager.h
index 271b0131654e3f85732010c836dbfafa88f29044..404500f2159c92b21ab2f7fc19c2103d353a8508 100644
--- a/services/ui/ws/server_window_compositor_frame_sink_manager.h
+++ b/services/ui/ws/server_window_compositor_frame_sink_manager.h
@@ -11,6 +11,7 @@
#include "cc/ipc/compositor_frame.mojom.h"
#include "cc/surfaces/surface_factory.h"
#include "cc/surfaces/surface_id.h"
+#include "cc/surfaces/surface_sequence_generator.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/ui/public/interfaces/window_tree.mojom.h"
@@ -21,6 +22,20 @@ class ServerWindow;
class ServerWindowCompositorFrameSink;
class ServerWindowCompositorFrameSinkManagerTestApi;
+struct CompositorFrameSinkData {
+ CompositorFrameSinkData();
+ CompositorFrameSinkData(CompositorFrameSinkData&& other);
+ ~CompositorFrameSinkData();
+
+ CompositorFrameSinkData& operator=(CompositorFrameSinkData&& other);
+
+ cc::SurfaceId latest_submitted_surface_id;
+ gfx::Size latest_submitted_frame_size;
+ cc::SurfaceSequenceGenerator surface_sequence_generator;
+ // TODO(fsamuel): This should be a mojo interface.
+ std::unique_ptr<ServerWindowCompositorFrameSink> compositor_frame_sink;
+};
+
// ServerWindowCompositorFrameSinkManager tracks the surfaces associated with a
// ServerWindow.
class ServerWindowCompositorFrameSinkManager {
@@ -47,6 +62,16 @@ class ServerWindowCompositorFrameSinkManager {
bool HasCompositorFrameSinkOfType(mojom::CompositorFrameSinkType type) const;
bool HasAnyCompositorFrameSink() const;
+ // Creates a surface dependency token that expires when the
+ // CompositorFrameSink of type |type| goes away associated with this window.
+ cc::SurfaceSequence CreateSurfaceSequence(
+ mojom::CompositorFrameSinkType type);
+ gfx::Size GetLatestFrameSize(mojom::CompositorFrameSinkType type) const;
+ cc::SurfaceId GetLatestSurfaceId(mojom::CompositorFrameSinkType type) const;
+ void SetLatestSurfaceInfo(mojom::CompositorFrameSinkType type,
+ const cc::SurfaceId& surface_id,
+ const gfx::Size& frame_size);
+
cc::SurfaceManager* GetCompositorFrameSinkManager();
private:
@@ -61,8 +86,7 @@ class ServerWindowCompositorFrameSinkManager {
ServerWindow* window_;
using TypeToCompositorFrameSinkMap =
- std::map<mojom::CompositorFrameSinkType,
- std::unique_ptr<ServerWindowCompositorFrameSink>>;
+ std::map<mojom::CompositorFrameSinkType, CompositorFrameSinkData>;
TypeToCompositorFrameSinkMap type_to_compositor_frame_sink_map_;
« no previous file with comments | « services/ui/ws/server_window_compositor_frame_sink.cc ('k') | services/ui/ws/server_window_compositor_frame_sink_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698