Chromium Code Reviews| 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 641946864ca300aa16117880873e619d7d43443a..1c15f14cf4bb0da49bc10e272d8efcdacd7e3880 100644 |
| --- a/content/renderer/gpu/render_widget_compositor.cc |
| +++ b/content/renderer/gpu/render_widget_compositor.cc |
| @@ -31,10 +31,12 @@ |
| #include "cc/output/copy_output_result.h" |
| #include "cc/output/latency_info_swap_promise.h" |
| #include "cc/output/swap_promise.h" |
| +#include "cc/proto/compositor_message.pb.h" |
| #include "cc/resources/single_release_callback.h" |
| #include "cc/scheduler/begin_frame_source.h" |
| #include "cc/trees/latency_info_swap_promise_monitor.h" |
| #include "cc/trees/layer_tree_host.h" |
| +#include "cc/trees/remote_proto_channel.h" |
| #include "components/scheduler/renderer/renderer_scheduler.h" |
| #include "content/common/content_switches_internal.h" |
| #include "content/common/gpu/client/context_provider_command_buffer.h" |
| @@ -215,6 +217,7 @@ RenderWidgetCompositor::RenderWidgetCompositor( |
| compositor_deps_(compositor_deps), |
| never_visible_(false), |
| layout_and_paint_async_callback_(nullptr), |
| + remote_proto_channel_receiver_(nullptr), |
| weak_factory_(this) { |
| } |
| @@ -968,6 +971,17 @@ void RenderWidgetCompositor::DidAbortSwapBuffers() { |
| widget_->OnSwapBuffersAborted(); |
| } |
| +void RenderWidgetCompositor::SetProtoReceiver(ProtoReceiver* receiver) { |
| + remote_proto_channel_receiver_ = receiver; |
| +} |
| + |
| +void RenderWidgetCompositor::SendCompositorProto( |
| + const cc::proto::CompositorMessage& proto) { |
| + std::vector<char> serialized(proto.ByteSize()); |
|
palmer
2015/11/16 23:00:29
char isn't really/isn't necessarily a byte; use ui
David Trainor- moved to gerrit
2015/11/17 00:55:27
Done.
|
| + proto.SerializeToArray(serialized.data(), serialized.size()); |
|
palmer
2015/11/16 23:00:29
Sadly, SerializeToArray is defined as taking an in
David Trainor- moved to gerrit
2015/11/17 00:55:27
Done.
|
| + widget_->ForwardCompositorProto(serialized); |
| +} |
| + |
| void RenderWidgetCompositor::RecordFrameTimingEvents( |
| scoped_ptr<cc::FrameTimingTracker::CompositeTimingSet> composite_events, |
| scoped_ptr<cc::FrameTimingTracker::MainFrameTimingSet> main_frame_events) { |
| @@ -1005,6 +1019,19 @@ void RenderWidgetCompositor::SetSurfaceIdNamespace( |
| layer_tree_host_->set_surface_id_namespace(surface_id_namespace); |
| } |
| +void RenderWidgetCompositor::OnHandleCompositorProto( |
| + const std::vector<char>& proto) { |
| + DCHECK(remote_proto_channel_receiver_); |
| + |
| + cc::proto::CompositorMessage deserialized; |
| + if (!deserialized.ParseFromArray(proto.data(), proto.size())) { |
| + LOG(ERROR) << "Unable to parse compositor proto."; |
| + return; |
| + } |
| + |
| + remote_proto_channel_receiver_->OnProtoReceived(deserialized); |
| +} |
| + |
| cc::ManagedMemoryPolicy RenderWidgetCompositor::GetGpuMemoryPolicy( |
| const cc::ManagedMemoryPolicy& policy) { |
| cc::ManagedMemoryPolicy actual = policy; |