Chromium Code Reviews| Index: content/browser/android/in_process/synchronous_compositor_impl.cc |
| diff --git a/content/browser/android/in_process/synchronous_compositor_impl.cc b/content/browser/android/in_process/synchronous_compositor_impl.cc |
| index 4d64521a57bde82141caef4440af9e771d808c81..e5c789b7b09686c7b16c3d1c6103aa883a803e65 100644 |
| --- a/content/browser/android/in_process/synchronous_compositor_impl.cc |
| +++ b/content/browser/android/in_process/synchronous_compositor_impl.cc |
| @@ -4,6 +4,8 @@ |
| #include "content/browser/android/in_process/synchronous_compositor_impl.h" |
| +#include <utility> |
| + |
| #include "base/auto_reset.h" |
| #include "base/bind.h" |
| #include "base/lazy_instance.h" |
| @@ -163,19 +165,16 @@ scoped_ptr<cc::CompositorFrame> SynchronousCompositorImpl::DemandDrawHw( |
| DCHECK(CalledOnValidThread()); |
| DCHECK(output_surface_); |
| DCHECK(begin_frame_source_); |
| + DCHECK(!frame_holder_); |
| - scoped_ptr<cc::CompositorFrame> frame = |
| - output_surface_->DemandDrawHw(surface_size, |
| - transform, |
| - viewport, |
| - clip, |
| - viewport_rect_for_tile_priority, |
| - transform_for_tile_priority); |
| + output_surface_->DemandDrawHw(surface_size, transform, viewport, clip, |
| + viewport_rect_for_tile_priority, |
| + transform_for_tile_priority); |
| - if (frame.get()) |
| - UpdateFrameMetaData(frame->metadata); |
| + if (frame_holder_) |
|
hush (inactive)
2015/12/29 19:42:17
just checking, because the DemandDrawHw is synchro
boliu
2015/12/29 20:22:52
Yep. SynchronousCompositorOutputSurface implementa
|
| + UpdateFrameMetaData(frame_holder_->metadata); |
| - return frame.Pass(); |
| + return std::move(frame_holder_); |
|
hush (inactive)
2015/12/29 19:42:17
How is this is different from frame_holder_.pass()
boliu
2015/12/29 20:22:52
No difference afaik. Presumit check says std::move
|
| } |
| void SynchronousCompositorImpl::ReturnResources( |
| @@ -188,14 +187,23 @@ bool SynchronousCompositorImpl::DemandDrawSw(SkCanvas* canvas) { |
| DCHECK(CalledOnValidThread()); |
| DCHECK(output_surface_); |
| DCHECK(begin_frame_source_); |
| + DCHECK(!frame_holder_); |
| + |
| + output_surface_->DemandDrawSw(canvas); |
| - scoped_ptr<cc::CompositorFrame> frame = |
| - output_surface_->DemandDrawSw(canvas); |
| + bool success = !!frame_holder_; |
| + if (frame_holder_) { |
| + UpdateFrameMetaData(frame_holder_->metadata); |
| + frame_holder_.reset(); |
| + } |
| - if (frame.get()) |
| - UpdateFrameMetaData(frame->metadata); |
| + return success; |
| +} |
| - return !!frame.get(); |
| +void SynchronousCompositorImpl::SwapBuffers(cc::CompositorFrame* frame) { |
| + DCHECK(!frame_holder_); |
| + frame_holder_.reset(new cc::CompositorFrame); |
| + frame->AssignTo(frame_holder_.get()); |
| } |
| void SynchronousCompositorImpl::UpdateFrameMetaData( |