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

Unified Diff: ui/compositor/test/in_process_context_factory.cc

Issue 2286273003: Make cc::Display not own its BeginFrameSource (Closed)
Patch Set: Fix webview Created 4 years, 4 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
« no previous file with comments | « ui/compositor/test/in_process_context_factory.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/test/in_process_context_factory.cc
diff --git a/ui/compositor/test/in_process_context_factory.cc b/ui/compositor/test/in_process_context_factory.cc
index 6e0100fd6cee92868f0f20b36fb41770c37383a1..a067770d36610b98ecd927e43ec64356e6818859 100644
--- a/ui/compositor/test/in_process_context_factory.cc
+++ b/ui/compositor/test/in_process_context_factory.cc
@@ -99,6 +99,11 @@ class DirectOutputSurface : public cc::OutputSurface {
} // namespace
+struct InProcessContextFactory::PerCompositorData {
+ std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source;
+ std::unique_ptr<cc::Display> display;
+};
+
InProcessContextFactory::InProcessContextFactory(
bool context_factory_for_test,
cc::SurfaceManager* surface_manager)
@@ -168,25 +173,26 @@ void InProcessContextFactory::CreateOutputSurface(
}
if (surface_manager_) {
- std::unique_ptr<cc::DelayBasedBeginFrameSource> begin_frame_source(
- new cc::DelayBasedBeginFrameSource(
- base::MakeUnique<cc::DelayBasedTimeSource>(
- compositor->task_runner().get())));
+ auto data = base::MakeUnique<PerCompositorData>();
+ data->begin_frame_source.reset(new cc::DelayBasedBeginFrameSource(
+ base::MakeUnique<cc::DelayBasedTimeSource>(
+ compositor->task_runner().get())));
std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
- begin_frame_source.get(), compositor->task_runner().get(),
+ data->begin_frame_source.get(), compositor->task_runner().get(),
display_output_surface->capabilities().max_frames_pending));
- per_compositor_data_[compositor.get()] = base::MakeUnique<cc::Display>(
+ data->display = base::MakeUnique<cc::Display>(
GetSharedBitmapManager(), GetGpuMemoryBufferManager(),
- compositor->GetRendererSettings(), std::move(begin_frame_source),
+ compositor->GetRendererSettings(), data->begin_frame_source.get(),
std::move(display_output_surface), std::move(scheduler),
base::MakeUnique<cc::TextureMailboxDeleter>(
compositor->task_runner().get()));
-
- auto* display = per_compositor_data_[compositor.get()].get();
std::unique_ptr<cc::SurfaceDisplayOutputSurface> surface_output_surface(
new cc::SurfaceDisplayOutputSurface(
- surface_manager_, compositor->surface_id_allocator(), display,
- context_provider, shared_worker_context_provider_));
+ surface_manager_, compositor->surface_id_allocator(),
+ data->display.get(), context_provider,
+ shared_worker_context_provider_));
+
+ per_compositor_data_[compositor.get()] = std::move(data);
compositor->SetOutputSurface(std::move(surface_output_surface));
} else {
compositor->SetOutputSurface(std::move(display_output_surface));
@@ -259,14 +265,14 @@ void InProcessContextFactory::SetDisplayVisible(ui::Compositor* compositor,
bool visible) {
if (!per_compositor_data_.count(compositor))
return;
- per_compositor_data_[compositor]->SetVisible(visible);
+ per_compositor_data_[compositor]->display->SetVisible(visible);
}
void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor,
const gfx::Size& size) {
if (!per_compositor_data_.count(compositor))
return;
- per_compositor_data_[compositor]->Resize(size);
+ per_compositor_data_[compositor]->display->Resize(size);
}
void InProcessContextFactory::AddObserver(ContextFactoryObserver* observer) {
« no previous file with comments | « ui/compositor/test/in_process_context_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698