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

Side by Side Diff: ui/compositor/test/in_process_context_factory.cc

Issue 2304483002: Revert of Make cc::Display not own its BeginFrameSource (Closed)
Patch Set: Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « ui/compositor/test/in_process_context_factory.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/compositor/test/in_process_context_factory.h" 5 #include "ui/compositor/test/in_process_context_factory.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 } 92 }
93 93
94 private: 94 private:
95 base::WeakPtrFactory<DirectOutputSurface> weak_ptr_factory_; 95 base::WeakPtrFactory<DirectOutputSurface> weak_ptr_factory_;
96 96
97 DISALLOW_COPY_AND_ASSIGN(DirectOutputSurface); 97 DISALLOW_COPY_AND_ASSIGN(DirectOutputSurface);
98 }; 98 };
99 99
100 } // namespace 100 } // namespace
101 101
102 struct InProcessContextFactory::PerCompositorData {
103 std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source;
104 std::unique_ptr<cc::Display> display;
105 };
106
107 InProcessContextFactory::InProcessContextFactory( 102 InProcessContextFactory::InProcessContextFactory(
108 bool context_factory_for_test, 103 bool context_factory_for_test,
109 cc::SurfaceManager* surface_manager) 104 cc::SurfaceManager* surface_manager)
110 : next_surface_client_id_(1u), 105 : next_surface_client_id_(1u),
111 use_test_surface_(true), 106 use_test_surface_(true),
112 context_factory_for_test_(context_factory_for_test), 107 context_factory_for_test_(context_factory_for_test),
113 surface_manager_(surface_manager) { 108 surface_manager_(surface_manager) {
114 DCHECK_NE(gl::GetGLImplementation(), gl::kGLImplementationNone) 109 DCHECK_NE(gl::GetGLImplementation(), gl::kGLImplementationNone)
115 << "If running tests, ensure that main() is calling " 110 << "If running tests, ensure that main() is calling "
116 << "gl::GLSurfaceTestSupport::InitializeOneOff()"; 111 << "gl::GLSurfaceTestSupport::InitializeOneOff()";
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 bool flipped_output_surface = false; 161 bool flipped_output_surface = false;
167 display_output_surface = base::MakeUnique<cc::PixelTestOutputSurface>( 162 display_output_surface = base::MakeUnique<cc::PixelTestOutputSurface>(
168 context_provider, shared_worker_context_provider_, 163 context_provider, shared_worker_context_provider_,
169 flipped_output_surface); 164 flipped_output_surface);
170 } else { 165 } else {
171 display_output_surface = base::MakeUnique<DirectOutputSurface>( 166 display_output_surface = base::MakeUnique<DirectOutputSurface>(
172 context_provider, shared_worker_context_provider_); 167 context_provider, shared_worker_context_provider_);
173 } 168 }
174 169
175 if (surface_manager_) { 170 if (surface_manager_) {
176 auto data = base::MakeUnique<PerCompositorData>(); 171 std::unique_ptr<cc::DelayBasedBeginFrameSource> begin_frame_source(
177 data->begin_frame_source.reset(new cc::DelayBasedBeginFrameSource( 172 new cc::DelayBasedBeginFrameSource(
178 base::MakeUnique<cc::DelayBasedTimeSource>( 173 base::MakeUnique<cc::DelayBasedTimeSource>(
179 compositor->task_runner().get()))); 174 compositor->task_runner().get())));
180 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( 175 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
181 data->begin_frame_source.get(), compositor->task_runner().get(), 176 begin_frame_source.get(), compositor->task_runner().get(),
182 display_output_surface->capabilities().max_frames_pending)); 177 display_output_surface->capabilities().max_frames_pending));
183 data->display = base::MakeUnique<cc::Display>( 178 per_compositor_data_[compositor.get()] = base::MakeUnique<cc::Display>(
184 GetSharedBitmapManager(), GetGpuMemoryBufferManager(), 179 GetSharedBitmapManager(), GetGpuMemoryBufferManager(),
185 compositor->GetRendererSettings(), data->begin_frame_source.get(), 180 compositor->GetRendererSettings(), std::move(begin_frame_source),
186 std::move(display_output_surface), std::move(scheduler), 181 std::move(display_output_surface), std::move(scheduler),
187 base::MakeUnique<cc::TextureMailboxDeleter>( 182 base::MakeUnique<cc::TextureMailboxDeleter>(
188 compositor->task_runner().get())); 183 compositor->task_runner().get()));
184
185 auto* display = per_compositor_data_[compositor.get()].get();
189 std::unique_ptr<cc::SurfaceDisplayOutputSurface> surface_output_surface( 186 std::unique_ptr<cc::SurfaceDisplayOutputSurface> surface_output_surface(
190 new cc::SurfaceDisplayOutputSurface( 187 new cc::SurfaceDisplayOutputSurface(
191 surface_manager_, compositor->surface_id_allocator(), 188 surface_manager_, compositor->surface_id_allocator(), display,
192 data->display.get(), context_provider, 189 context_provider, shared_worker_context_provider_));
193 shared_worker_context_provider_));
194
195 per_compositor_data_[compositor.get()] = std::move(data);
196 compositor->SetOutputSurface(std::move(surface_output_surface)); 190 compositor->SetOutputSurface(std::move(surface_output_surface));
197 } else { 191 } else {
198 compositor->SetOutputSurface(std::move(display_output_surface)); 192 compositor->SetOutputSurface(std::move(display_output_surface));
199 } 193 }
200 } 194 }
201 195
202 std::unique_ptr<Reflector> InProcessContextFactory::CreateReflector( 196 std::unique_ptr<Reflector> InProcessContextFactory::CreateReflector(
203 Compositor* mirrored_compositor, 197 Compositor* mirrored_compositor,
204 Layer* mirroring_layer) { 198 Layer* mirroring_layer) {
205 return base::WrapUnique(new FakeReflector); 199 return base::WrapUnique(new FakeReflector);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 } 252 }
259 253
260 cc::SurfaceManager* InProcessContextFactory::GetSurfaceManager() { 254 cc::SurfaceManager* InProcessContextFactory::GetSurfaceManager() {
261 return surface_manager_; 255 return surface_manager_;
262 } 256 }
263 257
264 void InProcessContextFactory::SetDisplayVisible(ui::Compositor* compositor, 258 void InProcessContextFactory::SetDisplayVisible(ui::Compositor* compositor,
265 bool visible) { 259 bool visible) {
266 if (!per_compositor_data_.count(compositor)) 260 if (!per_compositor_data_.count(compositor))
267 return; 261 return;
268 per_compositor_data_[compositor]->display->SetVisible(visible); 262 per_compositor_data_[compositor]->SetVisible(visible);
269 } 263 }
270 264
271 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor, 265 void InProcessContextFactory::ResizeDisplay(ui::Compositor* compositor,
272 const gfx::Size& size) { 266 const gfx::Size& size) {
273 if (!per_compositor_data_.count(compositor)) 267 if (!per_compositor_data_.count(compositor))
274 return; 268 return;
275 per_compositor_data_[compositor]->display->Resize(size); 269 per_compositor_data_[compositor]->Resize(size);
276 } 270 }
277 271
278 void InProcessContextFactory::AddObserver(ContextFactoryObserver* observer) { 272 void InProcessContextFactory::AddObserver(ContextFactoryObserver* observer) {
279 observer_list_.AddObserver(observer); 273 observer_list_.AddObserver(observer);
280 } 274 }
281 275
282 void InProcessContextFactory::RemoveObserver(ContextFactoryObserver* observer) { 276 void InProcessContextFactory::RemoveObserver(ContextFactoryObserver* observer) {
283 observer_list_.RemoveObserver(observer); 277 observer_list_.RemoveObserver(observer);
284 } 278 }
285 279
286 } // namespace ui 280 } // namespace ui
OLDNEW
« 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