| Index: content/browser/compositor/browser_compositor_output_surface.cc
|
| diff --git a/content/browser/compositor/browser_compositor_output_surface.cc b/content/browser/compositor/browser_compositor_output_surface.cc
|
| index 81c79a429aee9caf579d04b2fd049aaa56d9bacb..1c1607ce7d488aed98b47103e5a84576fa284f6b 100644
|
| --- a/content/browser/compositor/browser_compositor_output_surface.cc
|
| +++ b/content/browser/compositor/browser_compositor_output_surface.cc
|
| @@ -25,24 +25,30 @@ BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
|
| std::unique_ptr<display_compositor::CompositorOverlayCandidateValidator>
|
| overlay_candidate_validator)
|
| : OutputSurface(std::move(context_provider)),
|
| - update_vsync_parameters_callback_(update_vsync_parameters_callback),
|
| reflector_(nullptr) {
|
| overlay_candidate_validator_ = std::move(overlay_candidate_validator);
|
| + update_vsync_parameters_callback_ = base::Bind(
|
| + &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
|
| + base::Unretained(this), update_vsync_parameters_callback);
|
| }
|
|
|
| BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
|
| std::unique_ptr<cc::SoftwareOutputDevice> software_device,
|
| const UpdateVSyncParametersCallback& update_vsync_parameters_callback)
|
| - : OutputSurface(std::move(software_device)),
|
| - update_vsync_parameters_callback_(update_vsync_parameters_callback),
|
| - reflector_(nullptr) {}
|
| + : OutputSurface(std::move(software_device)), reflector_(nullptr) {
|
| + update_vsync_parameters_callback_ = base::Bind(
|
| + &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
|
| + base::Unretained(this), update_vsync_parameters_callback);
|
| +}
|
|
|
| BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
|
| const scoped_refptr<cc::VulkanContextProvider>& vulkan_context_provider,
|
| const UpdateVSyncParametersCallback& update_vsync_parameters_callback)
|
| - : OutputSurface(std::move(vulkan_context_provider)),
|
| - update_vsync_parameters_callback_(update_vsync_parameters_callback),
|
| - reflector_(nullptr) {}
|
| + : OutputSurface(std::move(vulkan_context_provider)), reflector_(nullptr) {
|
| + update_vsync_parameters_callback_ = base::Bind(
|
| + &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
|
| + base::Unretained(this), update_vsync_parameters_callback);
|
| +}
|
|
|
| BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() {
|
| if (reflector_)
|
| @@ -50,6 +56,14 @@ BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() {
|
| DCHECK(!reflector_);
|
| }
|
|
|
| +void BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu(
|
| + const UpdateVSyncParametersCallback& callback,
|
| + base::TimeTicks timebase,
|
| + base::TimeDelta interval) {
|
| + last_vsync_timebase_ = timebase;
|
| + callback.Run(timebase, interval);
|
| +}
|
| +
|
| void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) {
|
| // Software mirroring is done by doing a GL copy out of the framebuffer - if
|
| // we have overlays then that data will be missing.
|
|
|