 Chromium Code Reviews
 Chromium Code Reviews Issue 1126313004:
  Let layoutAndPaintAsync() schedule commit asynchronously  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1126313004:
  Let layoutAndPaintAsync() schedule commit asynchronously  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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 a4278915f223d818e6557068dc6d56b2933acf33..38756f019bd542c9b37bd62d614df94a695d6ffd 100644 | 
| --- a/content/renderer/gpu/render_widget_compositor.cc | 
| +++ b/content/renderer/gpu/render_widget_compositor.cc | 
| @@ -740,19 +740,27 @@ void RenderWidgetCompositor::compositeAndReadbackAsync( | 
| ScheduleCommit(); | 
| } | 
| -bool RenderWidgetCompositor::CommitIsSynchronous() const { | 
| +bool RenderWidgetCompositor::CommitIsSynchronous() const | 
| 
no sievers
2015/05/07 17:57:56
nit: move brace back up
 
Xianzhu
2015/05/07 18:05:36
Done.
 | 
| +{ | 
| return !compositor_deps_->GetCompositorImplThreadTaskRunner().get() && | 
| !layer_tree_host_->settings().single_thread_proxy_scheduler; | 
| } | 
| void RenderWidgetCompositor::ScheduleCommit() { | 
| if (CommitIsSynchronous()) { | 
| - layer_tree_host_->Composite(gfx::FrameTime::Now()); | 
| + base::MessageLoop::current()->PostTask( | 
| + FROM_HERE, base::Bind(&RenderWidgetCompositor::SynchronousCommit, | 
| + weak_factory_.GetWeakPtr())); | 
| } else { | 
| layer_tree_host_->SetNeedsCommit(); | 
| } | 
| } | 
| +void RenderWidgetCompositor::SynchronousCommit() { | 
| + DCHECK(CommitIsSynchronous()); | 
| + layer_tree_host_->Composite(gfx::FrameTime::Now()); | 
| +} | 
| + | 
| void RenderWidgetCompositor::finishAllRendering() { | 
| layer_tree_host_->FinishAllRendering(); | 
| } | 
| @@ -918,20 +926,6 @@ void RenderWidgetCompositor::DidFailToInitializeOutputSurface() { | 
| 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; | 
| } |