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

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

Issue 2715663007: Implement temporary reference assignment with DisplayCompositor. (Closed)
Patch Set: Cleanup. 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: 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 1053fafad1f4b3ddf5d4d6d49694f7e7b98b6726..dc4404c9af7e440c6a2afcffad718772dab783f2 100644
--- a/services/ui/ws/server_window_compositor_frame_sink_manager.cc
+++ b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
@@ -29,25 +29,17 @@ void ServerWindowCompositorFrameSinkManager::CreateRootCompositorFrameSink(
cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
if (!frame_sink_data_)
- frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
+ CreateCompositorFrameSinkData();
frame_sink_data_->frame_sink_id = frame_sink_id;
- cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
- if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
- private_request =
- std::move(frame_sink_data_->pending_compositor_frame_sink_request);
- } else {
- private_request =
- mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
- }
// TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
// or Android. We should instead use GpuSurfaceTracker here on those
// platforms.
window_->delegate()->GetDisplayCompositor()->CreateRootCompositorFrameSink(
frame_sink_id, widget, std::move(sink_request),
- std::move(private_request), std::move(client),
- std::move(display_request));
+ std::move(frame_sink_data_->pending_compositor_frame_sink_request),
+ std::move(client), std::move(display_request));
if (window_->parent()) {
ServerWindow* root_window = window_->GetRoot();
@@ -64,20 +56,12 @@ void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
if (!frame_sink_data_)
- frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
+ CreateCompositorFrameSinkData();
frame_sink_data_->frame_sink_id = frame_sink_id;
- cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
- if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
- private_request =
- std::move(frame_sink_data_->pending_compositor_frame_sink_request);
- } else {
- private_request =
- mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
- }
-
window_->delegate()->GetDisplayCompositor()->CreateCompositorFrameSink(
- frame_sink_id, std::move(request), std::move(private_request),
+ frame_sink_id, std::move(request),
+ std::move(frame_sink_data_->pending_compositor_frame_sink_request),
std::move(client));
if (window_->parent()) {
@@ -91,13 +75,8 @@ void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId(
const cc::FrameSinkId& frame_sink_id) {
- if (frame_sink_data_) {
- frame_sink_data_->compositor_frame_sink->AddChildFrameSink(frame_sink_id);
- return;
- }
- frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
- frame_sink_data_->pending_compositor_frame_sink_request =
- mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
+ if (!frame_sink_data_)
+ CreateCompositorFrameSinkData();
frame_sink_data_->compositor_frame_sink->AddChildFrameSink(frame_sink_id);
}
@@ -107,6 +86,13 @@ void ServerWindowCompositorFrameSinkManager::RemoveChildFrameSinkId(
frame_sink_data_->compositor_frame_sink->RemoveChildFrameSink(frame_sink_id);
}
+void ServerWindowCompositorFrameSinkManager::ClaimTemporaryReference(
+ const cc::SurfaceId& surface_id) {
+ if (!frame_sink_data_)
+ CreateCompositorFrameSinkData();
+ frame_sink_data_->compositor_frame_sink->ClaimTemporaryReference(surface_id);
+}
+
void ServerWindowCompositorFrameSinkManager::OnRootChanged(
ServerWindow* old_root,
ServerWindow* new_root) {
@@ -123,6 +109,13 @@ void ServerWindowCompositorFrameSinkManager::OnRootChanged(
}
}
+void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkData() {
+ DCHECK(!frame_sink_data_);
+ frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
+ frame_sink_data_->pending_compositor_frame_sink_request =
+ mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
+}
+
CompositorFrameSinkData::CompositorFrameSinkData() {}
CompositorFrameSinkData::~CompositorFrameSinkData() {}

Powered by Google App Engine
This is Rietveld 408576698