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

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

Issue 2453013002: Mus: Remove dependency on ServerWindowCompositorFrameSink from FrameGenerator (Closed)
Patch Set: Delete may_contain_video 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.cc
diff --git a/services/ui/ws/server_window_compositor_frame_sink_manager.cc b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
index 43153a0a2dffca627ee03ab92326b0a770c6483c..436434a7e943c8a0b14044c47525721bbc1bd2a8 100644
--- a/services/ui/ws/server_window_compositor_frame_sink_manager.cc
+++ b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
@@ -45,11 +45,13 @@ void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
cc::FrameSinkId frame_sink_id(
WindowIdToTransportId(window_->id()),
static_cast<uint32_t>(compositor_frame_sink_type));
- std::unique_ptr<ServerWindowCompositorFrameSink> compositor_frame_sink(
- new ServerWindowCompositorFrameSink(
- this, frame_sink_id, std::move(request), std::move(client)));
+ CompositorFrameSinkData data;
+ data.compositor_frame_sink =
+ base::MakeUnique<ServerWindowCompositorFrameSink>(
+ this, frame_sink_id, std::move(request), std::move(client));
+
type_to_compositor_frame_sink_map_[compositor_frame_sink_type] =
- std::move(compositor_frame_sink);
+ std::move(data);
}
ServerWindowCompositorFrameSink*
@@ -66,8 +68,9 @@ ServerWindowCompositorFrameSink*
ServerWindowCompositorFrameSinkManager::GetCompositorFrameSinkByType(
mojom::CompositorFrameSinkType type) const {
auto iter = type_to_compositor_frame_sink_map_.find(type);
- return iter == type_to_compositor_frame_sink_map_.end() ? nullptr
- : iter->second.get();
+ return iter == type_to_compositor_frame_sink_map_.end()
+ ? nullptr
+ : iter->second.compositor_frame_sink.get();
}
bool ServerWindowCompositorFrameSinkManager::HasCompositorFrameSinkOfType(
@@ -79,6 +82,33 @@ bool ServerWindowCompositorFrameSinkManager::HasAnyCompositorFrameSink() const {
return GetDefaultCompositorFrameSink() || GetUnderlayCompositorFrameSink();
}
+gfx::Size ServerWindowCompositorFrameSinkManager::GetLastFrameSize(
+ mojom::CompositorFrameSinkType type) const {
+ auto it = type_to_compositor_frame_sink_map_.find(type);
+ if (it == type_to_compositor_frame_sink_map_.end())
+ return gfx::Size();
+
+ return it->second.last_submitted_frame_size;
+}
+
+cc::SurfaceId ServerWindowCompositorFrameSinkManager::GetLastSurfaceId(
+ mojom::CompositorFrameSinkType type) const {
+ auto it = type_to_compositor_frame_sink_map_.find(type);
+ if (it == type_to_compositor_frame_sink_map_.end())
+ return cc::SurfaceId();
+
+ return it->second.last_submitted_surface_id;
+}
+
+void ServerWindowCompositorFrameSinkManager::SetLastSurfaceId(
+ mojom::CompositorFrameSinkType type,
+ const cc::SurfaceId& surface_id,
+ const gfx::Size& frame_size) {
+ CompositorFrameSinkData& data = type_to_compositor_frame_sink_map_[type];
+ data.last_submitted_surface_id = surface_id;
+ data.last_submitted_frame_size = frame_size;
+}
+
cc::SurfaceManager*
ServerWindowCompositorFrameSinkManager::GetCompositorFrameSinkManager() {
return window()->delegate()->GetDisplayCompositor()->manager();
@@ -90,13 +120,30 @@ bool ServerWindowCompositorFrameSinkManager::
auto iter = type_to_compositor_frame_sink_map_.find(type);
if (iter == type_to_compositor_frame_sink_map_.end())
return false;
- if (iter->second->last_submitted_frame_size().IsEmpty())
+ if (!iter->second.compositor_frame_sink ||
+ iter->second.compositor_frame_sink->last_submitted_frame_size().IsEmpty())
return false;
const gfx::Size& last_submitted_frame_size =
- iter->second->last_submitted_frame_size();
+ iter->second.compositor_frame_sink->last_submitted_frame_size();
return last_submitted_frame_size.width() >= window_->bounds().width() &&
last_submitted_frame_size.height() >= window_->bounds().height();
}
+CompositorFrameSinkData::CompositorFrameSinkData() {}
+
+CompositorFrameSinkData::~CompositorFrameSinkData() {}
+
+CompositorFrameSinkData::CompositorFrameSinkData(
+ CompositorFrameSinkData&& other)
+ : last_submitted_surface_id(other.last_submitted_surface_id),
+ compositor_frame_sink(std::move(other.compositor_frame_sink)) {}
+
+CompositorFrameSinkData& CompositorFrameSinkData::operator=(
+ CompositorFrameSinkData&& other) {
+ last_submitted_surface_id = other.last_submitted_surface_id;
+ compositor_frame_sink = std::move(other.compositor_frame_sink);
+ return *this;
+}
+
} // namespace ws
} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698