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

Unified Diff: content/renderer/gpu/render_widget_compositor.cc

Issue 2835763002: Use swap-promise to improve first* paint times (Closed)
Patch Set: address review comments Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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..2adeb8b87e81ae0ba9c486d254b5305614c03901 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 base::TimeTicks::Now().ToInternalValue() /
+ static_cast<double>(base::Time::kMicrosecondsPerSecond);
sunnyps 2017/05/02 01:20:46 nit: can you put the static_case<double> on the fi
panicker 2017/05/02 21:21:36 Done.
+}
+
} // 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,10 @@ void RenderWidgetCompositor::SetLocalSurfaceId(
layer_tree_host_->SetLocalSurfaceId(local_surface_id);
}
+void RenderWidgetCompositor::NotifySwapTime(
+ base::Callback<void(bool, double)> callback) {
+ QueueSwapPromise(base::MakeUnique<ReportTimeSwapPromise>(
+ std::move(callback), base::ThreadTaskRunnerHandle::Get()));
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698