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

Unified Diff: cc/ipc/render_pass_struct_traits.cc

Issue 2582823002: WIP: Surface Synchronization System
Patch Set: Only create ClientSurfaceEmbedder if window is visible. Trash it otherwise. Created 3 years, 11 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: cc/ipc/render_pass_struct_traits.cc
diff --git a/cc/ipc/render_pass_struct_traits.cc b/cc/ipc/render_pass_struct_traits.cc
index c2de5a77800075bc8425b6ea1ee04654ac3ad974..257b4f4f2ea9eca329e5f537f81df60e7eafd913 100644
--- a/cc/ipc/render_pass_struct_traits.cc
+++ b/cc/ipc/render_pass_struct_traits.cc
@@ -31,6 +31,7 @@ bool StructTraits<cc::mojom::RenderPassDataView,
mojo::ArrayDataView<cc::mojom::DrawQuadDataView> quads;
data.GetQuadListDataView(&quads);
cc::SharedQuadState* last_sqs = nullptr;
+ cc::DrawQuad* last_draw_quad = nullptr;
for (size_t i = 0; i < quads.size(); ++i) {
cc::mojom::DrawQuadDataView quad_data_view;
quads.GetDataView(i, &quad_data_view);
@@ -57,6 +58,29 @@ bool StructTraits<cc::mojom::RenderPassDataView,
quad->shared_quad_state = last_sqs;
if (!quad->shared_quad_state)
return false;
+
+ // If this quad is a fallback SurfaceDrawQuad then update the previous
+ // primary SurfaceDrawQuad to point to this quad.
+ if (quad->material == cc::DrawQuad::SURFACE_CONTENT) {
+ const cc::SurfaceDrawQuad* surface_draw_quad =
+ cc::SurfaceDrawQuad::MaterialCast(quad);
+ if (surface_draw_quad->surface_draw_quad_type ==
+ cc::SurfaceDrawQuadType::FALLBACK) {
+ if (!last_draw_quad ||
+ last_draw_quad->material != cc::DrawQuad::SURFACE_CONTENT) {
+ return false;
+ }
+ cc::SurfaceDrawQuad* last_surface_draw_quad =
+ static_cast<cc::SurfaceDrawQuad*>(last_draw_quad);
+ // Only one fallback quad is currently supported.
+ if (last_surface_draw_quad->surface_draw_quad_type !=
+ cc::SurfaceDrawQuadType::PRIMARY) {
+ return false;
+ }
+ last_surface_draw_quad->fallback_quad = surface_draw_quad;
+ }
+ }
+ last_draw_quad = quad;
}
return true;
}

Powered by Google App Engine
This is Rietveld 408576698