Chromium Code Reviews| 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( |
|
danakj
2016/08/30 01:10:56
it works here cuz you're making a new |data|. mayb
enne (OOO)
2016/08/30 20:17:28
I don't think this one needs a comment. I think i
|
| + 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) { |