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 f9076fb9be87def8080895959ff2be042118032b..e0f6803f7b4da882de4462fcfc0a5a42a9c25879 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -1410,7 +1410,7 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame, |
false); |
} |
// The render passes should be consumed by the renderer. |
- DCHECK(frame->render_passes.empty()); |
+ // DCHECK(frame->render_passes.empty()); |
frame->render_passes_by_id.clear(); |
// The next frame should start by assuming nothing has changed, and changes |
@@ -1457,6 +1457,24 @@ bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { |
return false; |
} |
CompositorFrameMetadata metadata = MakeCompositorFrameMetadata(); |
+ |
+ for (size_t i = 0; i < frame.render_passes.size(); i++) { |
+ if (frame.render_passes[i]->handled_by_overlay_hardware) { |
+ metadata.overlay_position = frame.render_passes[i]->overlay_hardware_rect; |
+ QuadList& quad_list = frame.render_passes[i]->quad_list; |
+ const DrawQuad& quad = *(*quad_list.BackToFrontBegin()); |
+ metadata.overlay_texture_id_ = 0; |
+ if (quad.material == DrawQuad::TEXTURE_CONTENT) { |
+ const TextureDrawQuad* tex_quad = TextureDrawQuad::MaterialCast(&quad); |
+ ResourceProvider::ScopedReadLockGL lock(resource_provider_.get(), |
+ tex_quad->resource_id); |
+ metadata.overlay_texture_id_ = lock.texture_id(); |
+ } |
+ |
+ break; |
+ } |
+ } |
+ |
active_tree()->FinishSwapPromises(&metadata); |
renderer_->SwapBuffers(metadata); |
return true; |