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

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

Issue 2835763002: Use swap-promise to improve first* paint times (Closed)
Patch Set: WrapWeakPersistent -> WrapCrossThreadWeakPersistent: as the callback lives on impl thread and destr… Created 3 years, 7 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
« no previous file with comments | « no previous file | content/renderer/gpu/render_widget_compositor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..3347026ab19dc33b029e14103de794053cadd32d 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(ReportTimeCallback callback) override;
void UpdateBrowserControlsState(blink::WebBrowserControlsState constraints,
blink::WebBrowserControlsState current,
@@ -219,6 +222,27 @@ class CONTENT_EXPORT RenderWidgetCompositor
cc::LayerTreeHost* layer_tree_host() { return layer_tree_host_.get(); }
private:
+ class ReportTimeSwapPromise : public cc::SwapPromise {
sunnyps 2017/05/05 00:12:14 nit: Can you move this to the .cc file? It doesn't
panicker 2017/05/05 00:21:14 Done.
+ 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_;
+
+ DISALLOW_COPY_AND_ASSIGN(ReportTimeSwapPromise);
+ };
+
void SetCompositorFrameSink(
std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink);
void LayoutAndUpdateLayers();
@@ -240,6 +264,8 @@ class CONTENT_EXPORT RenderWidgetCompositor
cc::FrameSinkId frame_sink_id_;
base::WeakPtrFactory<RenderWidgetCompositor> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositor);
};
} // namespace content
« no previous file with comments | « no previous file | content/renderer/gpu/render_widget_compositor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698