| Index: services/ui/surfaces/direct_output_surface_ozone.cc
|
| diff --git a/services/ui/surfaces/direct_output_surface_ozone.cc b/services/ui/surfaces/direct_output_surface_ozone.cc
|
| index 2821826221261e8e2755c4798e4592a1ecf4238c..18591694591e61faf01cb0809312baa94e1d73bb 100644
|
| --- a/services/ui/surfaces/direct_output_surface_ozone.cc
|
| +++ b/services/ui/surfaces/direct_output_surface_ozone.cc
|
| @@ -53,7 +53,10 @@ DirectOutputSurfaceOzone::DirectOutputSurfaceOzone(
|
|
|
| context_provider->SetSwapBuffersCompletionCallback(
|
| base::Bind(&DirectOutputSurfaceOzone::OnGpuSwapBuffersCompleted,
|
| - base::Unretained(this)));
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + context_provider->SetUpdateVSyncParametersCallback(
|
| + base::Bind(&DirectOutputSurfaceOzone::OnVSyncParametersUpdated,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| DirectOutputSurfaceOzone::~DirectOutputSurfaceOzone() {
|
| @@ -140,13 +143,6 @@ bool DirectOutputSurfaceOzone::HasExternalStencilTest() const {
|
|
|
| void DirectOutputSurfaceOzone::ApplyExternalStencil() {}
|
|
|
| -void DirectOutputSurfaceOzone::OnUpdateVSyncParametersFromGpu(
|
| - base::TimeTicks timebase,
|
| - base::TimeDelta interval) {
|
| - DCHECK(client_);
|
| - synthetic_begin_frame_source_->OnUpdateVSyncParameters(timebase, interval);
|
| -}
|
| -
|
| void DirectOutputSurfaceOzone::OnGpuSwapBuffersCompleted(
|
| const std::vector<ui::LatencyInfo>& latency_info,
|
| gfx::SwapResult result,
|
| @@ -167,4 +163,13 @@ void DirectOutputSurfaceOzone::OnGpuSwapBuffersCompleted(
|
| client_->SetNeedsRedrawRect(gfx::Rect(swap_size_));
|
| }
|
|
|
| +void DirectOutputSurfaceOzone::OnVSyncParametersUpdated(
|
| + base::TimeTicks timebase,
|
| + base::TimeDelta interval) {
|
| + // TODO(brianderson): We should not be receiving 0 intervals.
|
| + synthetic_begin_frame_source_->OnUpdateVSyncParameters(
|
| + timebase,
|
| + interval.is_zero() ? cc::BeginFrameArgs::DefaultInterval() : interval);
|
| +}
|
| +
|
| } // namespace ui
|
|
|