| Index: content/renderer/gpu/render_widget_compositor.cc
|
| diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc
|
| index b6c7631c744cd0d7965191fd7105db39b4a6fbda..3767511fee5514de021d182b61f63b9b1c6782cc 100644
|
| --- a/content/renderer/gpu/render_widget_compositor.cc
|
| +++ b/content/renderer/gpu/render_widget_compositor.cc
|
| @@ -186,8 +186,37 @@ static cc::BrowserControlsState ConvertBrowserControlsState(
|
| return static_cast<cc::BrowserControlsState>(state);
|
| }
|
|
|
| +double MonotonicallyIncreasingTime() {
|
| + return static_cast<double>(base::TimeTicks::Now().ToInternalValue()) /
|
| + base::Time::kMicrosecondsPerSecond;
|
| +}
|
| +
|
| } // namespace
|
|
|
| +RenderWidgetCompositor::ReportTimeSwapPromise::ReportTimeSwapPromise(
|
| + ReportTimeCallback callback,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
|
| + : callback_(callback), task_runner_(task_runner) {}
|
| +
|
| +RenderWidgetCompositor::ReportTimeSwapPromise::~ReportTimeSwapPromise() {}
|
| +
|
| +void RenderWidgetCompositor::ReportTimeSwapPromise::DidSwap() {
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::BindOnce(callback_, true, MonotonicallyIncreasingTime()));
|
| +}
|
| +
|
| +cc::SwapPromise::DidNotSwapAction
|
| +RenderWidgetCompositor::ReportTimeSwapPromise::DidNotSwap(
|
| + cc::SwapPromise::DidNotSwapReason reason) {
|
| + task_runner_->PostTask(FROM_HERE, base::BindOnce(callback_, false, 0));
|
| + return cc::SwapPromise::DidNotSwapAction::BREAK_PROMISE;
|
| +}
|
| +
|
| +int64_t RenderWidgetCompositor::ReportTimeSwapPromise::TraceId() const {
|
| + return 0;
|
| +}
|
| +
|
| // static
|
| std::unique_ptr<RenderWidgetCompositor> RenderWidgetCompositor::Create(
|
| RenderWidgetCompositorDelegate* delegate,
|
| @@ -1155,4 +1184,9 @@ void RenderWidgetCompositor::SetLocalSurfaceId(
|
| layer_tree_host_->SetLocalSurfaceId(local_surface_id);
|
| }
|
|
|
| +void RenderWidgetCompositor::NotifySwapTime(ReportTimeCallback callback) {
|
| + QueueSwapPromise(base::MakeUnique<ReportTimeSwapPromise>(
|
| + std::move(callback), base::ThreadTaskRunnerHandle::Get()));
|
| +}
|
| +
|
| } // namespace content
|
|
|