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) { |