Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index eb50b61cbe12936bd9d0dfde9ac04e4b7bdef212..b04f1224d4f9674b28c19b83f903e724be67a28e 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -113,12 +113,26 @@ void LayerImpl::PassCopyRequests(ScopedPtrVector<CopyOutputRequest>* requests) { |
NoteLayerPropertyChangedForSubtree(); |
} |
-void LayerImpl::TakeCopyRequests(ScopedPtrVector<CopyOutputRequest>* requests) { |
+void LayerImpl::TakeCopyRequestsAndTransformToTarget( |
+ ScopedPtrVector<CopyOutputRequest>* requests) { |
if (copy_requests_.empty()) |
return; |
requests->insert_and_take(requests->end(), copy_requests_); |
copy_requests_.clear(); |
+ |
+ for (size_t i = 0; i < requests->size(); ++i) { |
+ CopyOutputRequest* request = requests->at(i); |
+ if (!request->has_area()) |
+ continue; |
+ |
+ gfx::Rect request_in_layer_space = request->area(); |
+ gfx::Rect request_in_content_space = |
+ LayerRectToContentRect(request_in_layer_space); |
+ request->set_area( |
+ MathUtil::MapClippedRect(draw_properties_.target_space_transform, |
+ request_in_content_space)); |
+ } |
} |
void LayerImpl::CreateRenderSurface() { |