Index: cc/output/direct_renderer.cc |
diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc |
index 1eb0fbc2af680bdfff66211567011f46c6e0a0d7..a47dce1b884d0eb9b8d07b098b1c6066bd5f9c97 100644 |
--- a/cc/output/direct_renderer.cc |
+++ b/cc/output/direct_renderer.cc |
@@ -58,7 +58,8 @@ static gfx::Transform window_matrix(int x, int y, int width, int height) { |
namespace cc { |
DirectRenderer::DrawingFrame::DrawingFrame() |
- : root_render_pass(NULL), |
+ : overlay_passes_in_draw_order(NULL), |
+ root_render_pass(NULL), |
current_render_pass(NULL), |
current_texture(NULL), |
offscreen_context_provider(NULL) {} |
@@ -133,7 +134,11 @@ DirectRenderer::DirectRenderer(RendererClient* client, |
ResourceProvider* resource_provider) |
: Renderer(client, settings), |
output_surface_(output_surface), |
- resource_provider_(resource_provider) {} |
+ resource_provider_(resource_provider), |
+ overlay_processor_( |
+ new OverlayProcessor(output_surface, resource_provider)) { |
+ overlay_processor_->Initialize(); |
+} |
DirectRenderer::~DirectRenderer() {} |
@@ -218,6 +223,9 @@ void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, |
frame.disable_picture_quad_image_filtering = |
disable_picture_quad_image_filtering; |
+ if (overlay_processor_->ProcessForOverlays(render_passes_in_draw_order)) |
+ frame.overlay_passes_in_draw_order = render_passes_in_draw_order; |
+ |
EnsureBackbuffer(); |
// Only reshape when we know we are going to draw. Otherwise, the reshape |
@@ -228,6 +236,9 @@ void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, |
BeginDrawingFrame(&frame); |
for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) { |
RenderPass* pass = render_passes_in_draw_order->at(i); |
+ if (pass->overlay_state == RenderPass::SIMPLE_OVERLAY) |
+ continue; |
+ |
DrawRenderPass(&frame, pass); |
for (ScopedPtrVector<CopyOutputRequest>::iterator it = |