Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 2a27ff7810416861d3d38af9db571d95038265bf..3527ed1138a215662797decb54b99b96b4d36320 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -1914,8 +1914,13 @@ void GLRenderer::EnsureScissorTestDisabled() { |
void GLRenderer::CopyCurrentRenderPassToBitmap( |
DrawingFrame* frame, |
scoped_ptr<CopyOutputRequest> request) { |
- GetFramebufferPixelsAsync(frame->current_render_pass->output_rect, |
- request.Pass()); |
+ gfx::Rect copy_rect = frame->current_render_pass->output_rect; |
+ if (request->has_area()) { |
+ // Intersect with the request's area, positioned with its origin at the |
+ // origin of the full copy_rect. |
+ copy_rect.Intersect(request->area() - copy_rect.OffsetFromOrigin()); |
+ } |
+ GetFramebufferPixelsAsync(copy_rect, request.Pass()); |
} |
void GLRenderer::ToGLMatrix(float* gl_matrix, const gfx::Transform& transform) { |