Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 8b8ed9cf137fc0230a316305c58a1bbd05a19773..01ab7b4b525ff05ce6f199a4b2f33bf0bc943836 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -165,7 +165,9 @@ DEFINE_SCOPED_UMA_HISTOGRAM_TIMER(PendingTreeDurationHistogramTimer, |
"Scheduling.%s.PendingTreeDuration"); |
LayerTreeHostImpl::FrameData::FrameData() |
- : render_surface_layer_list(nullptr), has_no_damage(false) {} |
+ : render_surface_layer_list(nullptr), |
+ has_no_damage(false), |
+ may_contain_video(false) {} |
LayerTreeHostImpl::FrameData::~FrameData() {} |
@@ -912,6 +914,8 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
DCHECK_EQ(active_tree_.get(), it->layer_tree_impl()); |
frame->will_draw_layers.push_back(*it); |
+ if (it->may_contain_video()) |
+ frame->may_contain_video = true; |
it->AppendQuads(target_render_pass, &append_quads_data); |
} |
@@ -1100,6 +1104,7 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { |
frame->render_passes.clear(); |
frame->will_draw_layers.clear(); |
frame->has_no_damage = false; |
+ frame->may_contain_video = false; |
if (active_tree_->RootRenderSurface()) { |
gfx::Rect device_viewport_damage_rect = viewport_damage_rect_; |
@@ -1824,6 +1829,7 @@ bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { |
return false; |
} |
CompositorFrameMetadata metadata = MakeCompositorFrameMetadata(); |
+ metadata.may_contain_video = frame.may_contain_video; |
active_tree()->FinishSwapPromises(&metadata); |
for (auto& latency : metadata.latency_info) { |
TRACE_EVENT_WITH_FLOW1("input,benchmark", |