Index: mojo/converters/surfaces/surfaces_type_converters.cc |
diff --git a/mojo/converters/surfaces/surfaces_type_converters.cc b/mojo/converters/surfaces/surfaces_type_converters.cc |
index 065fb7526860bc1af6d992ecf937976e31151316..6e901dfe3958ef7366fbe9e96315a1d2905d379a 100644 |
--- a/mojo/converters/surfaces/surfaces_type_converters.cc |
+++ b/mojo/converters/surfaces/surfaces_type_converters.cc |
@@ -6,6 +6,7 @@ |
#include "base/macros.h" |
#include "cc/output/compositor_frame.h" |
+#include "cc/output/compositor_frame_metadata.h" |
#include "cc/output/delegated_frame_data.h" |
#include "cc/quads/debug_border_draw_quad.h" |
#include "cc/quads/draw_quad.h" |
@@ -63,6 +64,7 @@ cc::SharedQuadState* ConvertSharedQuadState(const SharedQuadStatePtr& input, |
} |
bool ConvertDrawQuad(const QuadPtr& input, |
+ const CompositorFrameMetadataPtr& metadata, |
cc::SharedQuadState* sqs, |
cc::RenderPass* render_pass, |
CustomSurfaceConverter* custom_converter) { |
@@ -124,8 +126,7 @@ bool ConvertDrawQuad(const QuadPtr& input, |
return false; |
if (custom_converter) { |
- return custom_converter->ConvertSurfaceDrawQuad(input, |
- sqs, |
+ return custom_converter->ConvertSurfaceDrawQuad(input, metadata, sqs, |
render_pass); |
} |
cc::SurfaceDrawQuad* surface_quad = |
@@ -427,6 +428,7 @@ PassPtr TypeConverter<PassPtr, cc::RenderPass>::Convert( |
// static |
scoped_ptr<cc::RenderPass> ConvertToRenderPass( |
const mojo::PassPtr& input, |
+ const mojo::CompositorFrameMetadataPtr& metadata, |
CustomSurfaceConverter* custom_converter) { |
scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create( |
input->shared_quad_states.size(), input->quads.size()); |
@@ -445,7 +447,8 @@ scoped_ptr<cc::RenderPass> ConvertToRenderPass( |
while (quad->shared_quad_state_index > sqs_iter.index()) { |
++sqs_iter; |
} |
- if (!ConvertDrawQuad(quad, *sqs_iter, pass.get(), custom_converter)) |
+ if (!ConvertDrawQuad(quad, metadata, *sqs_iter, pass.get(), |
+ custom_converter)) |
return scoped_ptr<cc::RenderPass>(); |
} |
return pass.Pass(); |
@@ -455,7 +458,9 @@ scoped_ptr<cc::RenderPass> ConvertToRenderPass( |
scoped_ptr<cc::RenderPass> |
TypeConverter<scoped_ptr<cc::RenderPass>, PassPtr>::Convert( |
const PassPtr& input) { |
- return ConvertToRenderPass(input, nullptr /* CustomSurfaceConverter */); |
+ mojo::CompositorFrameMetadataPtr metadata; |
+ return ConvertToRenderPass(input, metadata, |
+ nullptr /* CustomSurfaceConverter */); |
} |
// static |
@@ -599,6 +604,24 @@ TypeConverter<cc::ReturnedResourceArray, Array<ReturnedResourcePtr>>::Convert( |
} |
// static |
+CompositorFrameMetadataPtr |
+TypeConverter<CompositorFrameMetadataPtr, cc::CompositorFrameMetadata>::Convert( |
+ const cc::CompositorFrameMetadata& input) { |
+ CompositorFrameMetadataPtr metadata = CompositorFrameMetadata::New(); |
+ metadata->device_scale_factor = input.device_scale_factor; |
+ return metadata.Pass(); |
+} |
+ |
+// static |
+cc::CompositorFrameMetadata |
+TypeConverter<cc::CompositorFrameMetadata, CompositorFrameMetadataPtr>::Convert( |
+ const CompositorFrameMetadataPtr& input) { |
+ cc::CompositorFrameMetadata metadata; |
+ metadata.device_scale_factor = input->device_scale_factor; |
+ return metadata; |
+} |
+ |
+// static |
CompositorFramePtr |
TypeConverter<CompositorFramePtr, cc::CompositorFrame>::Convert( |
const cc::CompositorFrame& input) { |
@@ -607,6 +630,7 @@ TypeConverter<CompositorFramePtr, cc::CompositorFrame>::Convert( |
cc::DelegatedFrameData* frame_data = input.delegated_frame_data.get(); |
frame->resources = |
Array<TransferableResourcePtr>::From(frame_data->resource_list); |
+ frame->metadata = CompositorFrameMetadata::From(input.metadata); |
const cc::RenderPassList& pass_list = frame_data->render_pass_list; |
frame->passes = Array<PassPtr>::New(pass_list.size()); |
for (size_t i = 0; i < pass_list.size(); ++i) { |
@@ -625,13 +649,15 @@ scoped_ptr<cc::CompositorFrame> ConvertToCompositorFrame( |
input->resources.To<cc::TransferableResourceArray>(); |
frame_data->render_pass_list.reserve(input->passes.size()); |
for (size_t i = 0; i < input->passes.size(); ++i) { |
- scoped_ptr<cc::RenderPass> pass = |
- ConvertToRenderPass(input->passes[i], custom_converter); |
+ scoped_ptr<cc::RenderPass> pass = ConvertToRenderPass( |
+ input->passes[i], input->metadata, custom_converter); |
if (!pass) |
return scoped_ptr<cc::CompositorFrame>(); |
frame_data->render_pass_list.push_back(pass.Pass()); |
} |
scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
+ cc::CompositorFrameMetadata metadata = |
+ input->metadata.To<cc::CompositorFrameMetadata>(); |
frame->delegated_frame_data = frame_data.Pass(); |
return frame.Pass(); |
} |