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

Unified Diff: services/ui/surfaces/display_compositor.cc

Issue 2576723002: Split cc::mojom::DisplayCompositor::CreateCompositorFrameSink() into CreateDisplayCompositorFrameSi… (Closed)
Patch Set: In DisplayCompositor::CreateDisplayCompositorFrameSink, let a local variable hold the result of Cre… Created 4 years 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
« no previous file with comments | « services/ui/surfaces/display_compositor.h ('k') | services/ui/ws/frame_generator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/surfaces/display_compositor.cc
diff --git a/services/ui/surfaces/display_compositor.cc b/services/ui/surfaces/display_compositor.cc
index ffa022361709f1b6c81c83281b93532cbf8dbe79..772fbd009153230795c5c4144ad74681462bcdaf 100644
--- a/services/ui/surfaces/display_compositor.cc
+++ b/services/ui/surfaces/display_compositor.cc
@@ -22,7 +22,7 @@
#include "services/ui/surfaces/display_output_surface_ozone.h"
#endif
-namespace ui {
+ namespace ui {
DisplayCompositor::DisplayCompositor(
scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_service,
@@ -92,31 +92,32 @@ void DisplayCompositor::OnCompositorFrameSinkPrivateConnectionLost(
compositor_frame_sinks_.erase(frame_sink_id);
}
-void DisplayCompositor::CreateCompositorFrameSink(
- const cc::FrameSinkId& frame_sink_id,
- gpu::SurfaceHandle surface_handle,
+void DisplayCompositor::CreateDisplayCompositorFrameSink(
+ const cc::FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle,
cc::mojom::MojoCompositorFrameSinkRequest request,
cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request,
cc::mojom::MojoCompositorFrameSinkClientPtr client) {
DCHECK(thread_checker_.CalledOnValidThread());
- // We cannot create more than one CompositorFrameSink with a given
- // |frame_sink_id|.
- DCHECK_EQ(0u, compositor_frame_sinks_.count(frame_sink_id));
-
- std::unique_ptr<cc::Display> display;
- std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source;
- if (surface_handle != gpu::kNullSurfaceHandle) {
- begin_frame_source.reset(new cc::DelayBasedBeginFrameSource(
- base::MakeUnique<cc::DelayBasedTimeSource>(task_runner_.get())));
- display =
- CreateDisplay(frame_sink_id, surface_handle, begin_frame_source.get());
- }
+ DCHECK_NE(surface_handle, gpu::kNullSurfaceHandle);
+ std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source(
+ new cc::DelayBasedBeginFrameSource(
+ base::MakeUnique<cc::DelayBasedTimeSource>(task_runner_.get())));
+ std::unique_ptr<cc::Display> display =
+ CreateDisplay(frame_sink_id, surface_handle, begin_frame_source.get());
+ CreateCompositorFrameSinkInternal(
+ frame_sink_id, surface_handle, std::move(display),
+ std::move(begin_frame_source), std::move(request),
+ std::move(private_request), std::move(client));
+}
- compositor_frame_sinks_[frame_sink_id] =
- base::MakeUnique<GpuCompositorFrameSink>(
- this, frame_sink_id, std::move(display),
- std::move(begin_frame_source), std::move(request),
- std::move(private_request), std::move(client));
+void DisplayCompositor::CreateOffscreenCompositorFrameSink(
+ const cc::FrameSinkId& frame_sink_id,
+ cc::mojom::MojoCompositorFrameSinkRequest request,
+ cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request,
+ cc::mojom::MojoCompositorFrameSinkClientPtr client) {
+ CreateCompositorFrameSinkInternal(
+ frame_sink_id, gpu::kNullSurfaceHandle, nullptr, nullptr,
+ std::move(request), std::move(private_request), std::move(client));
}
void DisplayCompositor::AddSurfaceReference(const cc::SurfaceReference& ref) {
@@ -218,6 +219,25 @@ std::unique_ptr<cc::Display> DisplayCompositor::CreateDisplay(
base::MakeUnique<cc::TextureMailboxDeleter>(task_runner_.get()));
}
+void DisplayCompositor::CreateCompositorFrameSinkInternal(
+ const cc::FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle,
+ std::unique_ptr<cc::Display> display,
+ std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source,
+ cc::mojom::MojoCompositorFrameSinkRequest request,
+ cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request,
+ cc::mojom::MojoCompositorFrameSinkClientPtr client) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ // We cannot create more than one CompositorFrameSink with a given
+ // |frame_sink_id|.
+ DCHECK_EQ(0u, compositor_frame_sinks_.count(frame_sink_id));
+
+ compositor_frame_sinks_[frame_sink_id] =
+ base::MakeUnique<GpuCompositorFrameSink>(
+ this, frame_sink_id, std::move(display),
+ std::move(begin_frame_source), std::move(request),
+ std::move(private_request), std::move(client));
+}
+
const cc::SurfaceId& DisplayCompositor::GetRootSurfaceId() const {
return reference_manager_->GetRootSurfaceId();
}
« no previous file with comments | « services/ui/surfaces/display_compositor.h ('k') | services/ui/ws/frame_generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698