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

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

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.h
diff --git a/content/renderer/gpu/render_widget_compositor.h b/content/renderer/gpu/render_widget_compositor.h
index a36b5f02b7ca12b46ed11b93f202fe78fd97801f..e78a93df84c9a5ae1d508d595154073d08c8efb0 100644
--- a/content/renderer/gpu/render_widget_compositor.h
+++ b/content/renderer/gpu/render_widget_compositor.h
@@ -53,6 +53,8 @@ class CONTENT_EXPORT RenderWidgetCompositor
: NON_EXPORTED_BASE(public blink::WebLayerTreeView),
NON_EXPORTED_BASE(public cc::LayerTreeHostClient),
NON_EXPORTED_BASE(public cc::LayerTreeHostSingleThreadClient) {
+ using ReportTimeCallback = base::Callback<void(bool, double)>;
+
public:
// Attempt to construct and initialize a compositor instance for the widget
// with the given settings. Returns NULL if initialization fails.
@@ -167,6 +169,7 @@ class CONTENT_EXPORT RenderWidgetCompositor
void SetShowPaintRects(bool show) override;
void SetShowDebugBorders(bool show) override;
void SetShowScrollBottleneckRects(bool show) override;
+ void NotifySwapTime(base::Callback<void(bool, double)> callback) override;
void UpdateBrowserControlsState(blink::WebBrowserControlsState constraints,
blink::WebBrowserControlsState current,
@@ -219,6 +222,25 @@ class CONTENT_EXPORT RenderWidgetCompositor
cc::LayerTreeHost* layer_tree_host() { return layer_tree_host_.get(); }
private:
+ class ReportTimeSwapPromise : public cc::SwapPromise {
+ public:
+ ReportTimeSwapPromise(
+ ReportTimeCallback callback,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
+ ~ReportTimeSwapPromise() override;
+
+ void DidActivate() override {}
+ void WillSwap(cc::CompositorFrameMetadata* metadata) override {}
+ void DidSwap() override;
+ DidNotSwapAction DidNotSwap(DidNotSwapReason reason) override;
+
+ int64_t TraceId() const override;
+
+ private:
+ ReportTimeCallback callback_;
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
sunnyps 2017/05/02 01:20:46 nit: DISALLOW_COPY_AND_ASSIGN(ReportTimeSwapPromis
panicker 2017/05/02 21:21:36 Done.
+ };
+
void SetCompositorFrameSink(
std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink);
void LayoutAndUpdateLayers();
« no previous file with comments | « no previous file | content/renderer/gpu/render_widget_compositor.cc » ('j') | content/renderer/gpu/render_widget_compositor.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698