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

Unified Diff: content/browser/android/synchronous_compositor_host.cc

Issue 2347563003: Added FrameFuture class (Closed)
Patch Set: Code review Created 4 years, 3 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
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, &param))
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;
}

Powered by Google App Engine
This is Rietveld 408576698