| 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 df8674a24e1730b1cb2f621e17988549de0b1767..a4278915f223d818e6557068dc6d56b2933acf33 100644
|
| --- a/content/renderer/gpu/render_widget_compositor.cc
|
| +++ b/content/renderer/gpu/render_widget_compositor.cc
|
| @@ -747,17 +747,10 @@
|
|
|
| void RenderWidgetCompositor::ScheduleCommit() {
|
| if (CommitIsSynchronous()) {
|
| - base::MessageLoop::current()->PostTask(
|
| - FROM_HERE, base::Bind(&RenderWidgetCompositor::SynchronousCommit,
|
| - weak_factory_.GetWeakPtr()));
|
| + layer_tree_host_->Composite(gfx::FrameTime::Now());
|
| } else {
|
| layer_tree_host_->SetNeedsCommit();
|
| }
|
| -}
|
| -
|
| -void RenderWidgetCompositor::SynchronousCommit() {
|
| - DCHECK(CommitIsSynchronous());
|
| - layer_tree_host_->Composite(gfx::FrameTime::Now());
|
| }
|
|
|
| void RenderWidgetCompositor::finishAllRendering() {
|
| @@ -925,6 +918,20 @@
|
| void RenderWidgetCompositor::WillCommit() {
|
| if (!layout_and_paint_async_callback_)
|
| return;
|
| +
|
| + if (CommitIsSynchronous()) {
|
| + // The caller expects the callback to be called asynchronously.
|
| + base::MessageLoop::current()->PostTask(
|
| + FROM_HERE, base::Bind(&RenderWidgetCompositor::DidLayoutAndPaintAsync,
|
| + weak_factory_.GetWeakPtr()));
|
| + } else {
|
| + DidLayoutAndPaintAsync();
|
| + }
|
| +}
|
| +
|
| +void RenderWidgetCompositor::DidLayoutAndPaintAsync() {
|
| + if (!layout_and_paint_async_callback_)
|
| + return;
|
| layout_and_paint_async_callback_->didLayoutAndPaint();
|
| layout_and_paint_async_callback_ = nullptr;
|
| }
|
|
|