Chromium Code Reviews| Index: content/browser/android/synchronous_compositor_host.cc |
| diff --git a/content/browser/android/synchronous_compositor_host.cc b/content/browser/android/synchronous_compositor_host.cc |
| index f63373c5dd72ef1d7806b5850335a9bd234f166a..59df912257bebef1d14723a2d4410ea22090b62d 100644 |
| --- a/content/browser/android/synchronous_compositor_host.cc |
| +++ b/content/browser/android/synchronous_compositor_host.cc |
| @@ -98,7 +98,8 @@ bool SynchronousCompositorHost::OnMessageReceived(const IPC::Message& message) { |
| return handled; |
| } |
| -void SynchronousCompositorHost::DemandDrawHwAsync( |
| +scoped_refptr<SynchronousCompositor::FrameFuture> |
| +SynchronousCompositorHost::DemandDrawHwAsync( |
| const gfx::Size& viewport_size, |
| const gfx::Rect& viewport_rect_for_tile_priority, |
| const gfx::Transform& transform_for_tile_priority) { |
| @@ -106,9 +107,13 @@ void SynchronousCompositorHost::DemandDrawHwAsync( |
| viewport_rect_for_tile_priority, |
| transform_for_tile_priority); |
| sender_->Send(new SyncCompositorMsg_DemandDrawHwAsync(routing_id_, params)); |
| + |
| + frame_future_ = new SynchronousCompositor::FrameFuture(); |
| + return frame_future_; |
| } |
| -SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw( |
| +scoped_refptr<SynchronousCompositor::FrameFuture> |
| +SynchronousCompositorHost::DemandDrawHw( |
| const gfx::Size& viewport_size, |
| const gfx::Rect& viewport_rect_for_tile_priority, |
| const gfx::Transform& transform_for_tile_priority) { |
| @@ -122,13 +127,17 @@ SynchronousCompositor::Frame SynchronousCompositorHost::DemandDrawHw( |
| if (!sender_->Send(new SyncCompositorMsg_DemandDrawHw( |
| routing_id_, params, &common_renderer_params, |
| &compositor_frame_sink_id, &compositor_frame))) { |
| - return SynchronousCompositor::Frame(); |
| + // return SynchronousCompositor::Frame(); |
| + return nullptr; |
| } |
| ProcessCommonParams(common_renderer_params); |
| - return ProcessHardwareFrame(compositor_frame_sink_id, |
| - std::move(compositor_frame)); |
| + frame_future_ = new SynchronousCompositor::FrameFuture(); |
| + frame_future_->setFrame(ProcessHardwareFrame(compositor_frame_sink_id, |
| + std::move(compositor_frame))); |
| + |
| + return frame_future_; |
| } |
| bool SynchronousCompositorHost::DemandDrawHwReceiveFrame( |
| @@ -136,27 +145,33 @@ bool SynchronousCompositorHost::DemandDrawHwReceiveFrame( |
| SyncCompositorHostMsg_ReturnFrame::Param param; |
| if (!SyncCompositorHostMsg_ReturnFrame::Read(&message, ¶m)) |
| return false; |
| - uint32_t compositor_frame_sink_id = std::get<0>(param); |
| - cc::CompositorFrame compositor_frame = std::move(std::get<1>(param)); |
| - client_->OnDrawHardwareProcessFrame(ProcessHardwareFrame( |
| - compositor_frame_sink_id, std::move(compositor_frame))); |
| + |
| + // uint32_t compositor_frame_sink_id = std::get<0>(param); |
| + // cc::CompositorFrame compositor_frame = std::move(std::get<1>(param)); |
| + // TODO(ojars): |
| + // client_->OnDrawHardwareProcessFrame( |
| + // ProcessHardwareFrame(compositor_frame_sink_id, |
| + // std::move(compositor_frame))); |
| return true; |
| } |
| -SynchronousCompositor::Frame SynchronousCompositorHost::ProcessHardwareFrame( |
| +std::unique_ptr<SynchronousCompositor::Frame> |
| +SynchronousCompositorHost::ProcessHardwareFrame( |
| uint32_t compositor_frame_sink_id, |
| cc::CompositorFrame compositor_frame) { |
| - SynchronousCompositor::Frame frame; |
| - frame.frame.reset(new cc::CompositorFrame); |
| - frame.compositor_frame_sink_id = compositor_frame_sink_id; |
| - *frame.frame = std::move(compositor_frame); |
| - if (!frame.frame->delegated_frame_data) { |
| + auto frame = base::MakeUnique<SynchronousCompositor::Frame>(); |
|
boliu
2016/09/20 00:27:56
Don't use auto here
ojars
2016/09/22 18:21:38
Done.
|
| + // SynchronousCompositor::Frame frame; |
| + frame->frame.reset(new cc::CompositorFrame); |
| + frame->compositor_frame_sink_id = compositor_frame_sink_id; |
| + *(frame->frame) = std::move(compositor_frame); |
| + if (!frame->frame->delegated_frame_data) { |
| // This can happen if compositor did not swap in this draw. |
| - frame.frame.reset(); |
| + frame->frame.reset(); |
| } |
| - if (frame.frame) { |
| - UpdateFrameMetaData(frame.frame->metadata.Clone()); |
| + if (frame->frame) { |
| + UpdateFrameMetaData(frame->frame->metadata.Clone()); |
| } |
| + // return base::MakeUnique<SynchronousCompositor::Frame>(frame); |
| return frame; |
| } |