| Index: third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
|
| index a95334c4641afdfbdad83a6da2c60e3f72df8c38..f48542c3331097de61199d541f41a5eddb74478d 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
|
| @@ -1057,19 +1057,39 @@ void GraphicsLayer::setNeedsDisplay()
|
| trackPaintInvalidation(*this, FloatRect(FloatPoint(), m_size), PaintInvalidationFull);
|
| }
|
|
|
| -void GraphicsLayer::setNeedsDisplayInRect(const IntRect& rect, PaintInvalidationReason invalidationReason, const DisplayItemClient& client)
|
| +void GraphicsLayer::setNeedsDisplayInRect(const Vector<NeedsDisplayRecord>& rects)
|
| {
|
| if (!drawsContent())
|
| return;
|
|
|
| - m_layer->layer()->invalidateRect(rect);
|
| - if (firstPaintInvalidationTrackingEnabled())
|
| - m_debugInfo.appendAnnotatedInvalidateRect(rect, invalidationReason);
|
| + std::vector<blink::WebRect> offsetRects(rects.size());
|
| +
|
| + for (size_t i = 0; i < rects.size(); ++i) {
|
| + IntRect rect = rects[i].r;
|
| + rect.move(-offsetFromLayoutObject());
|
| + offsetRects[i] = rect;
|
| + }
|
| +
|
| + m_layer->layer()->invalidateRects(offsetRects);
|
| +
|
| + if (firstPaintInvalidationTrackingEnabled()) {
|
| + for (size_t i = 0; i < rects.size(); ++i) {
|
| + IntRect rect = rects[i].r;
|
| + rect.move(-offsetFromLayoutObject());
|
| + m_debugInfo.appendAnnotatedInvalidateRect(rect, rects[i].invalidationReason);
|
| + }
|
| + }
|
| +
|
| for (size_t i = 0; i < m_linkHighlights.size(); ++i)
|
| m_linkHighlights[i]->invalidate();
|
|
|
| - if (isTrackingPaintInvalidations())
|
| - trackPaintInvalidation(client, rect, invalidationReason);
|
| + if (isTrackingPaintInvalidations()) {
|
| + for (size_t i = 0; i < rects.size(); ++i) {
|
| + IntRect rect = rects[i].r;
|
| + rect.move(-offsetFromLayoutObject());
|
| + trackPaintInvalidation(rects[i].client, rect, rects[i].invalidationReason);
|
| + }
|
| + }
|
| }
|
|
|
| void GraphicsLayer::invalidateDisplayItemClient(const DisplayItemClient& displayItemClient, PaintInvalidationReason invalidationReason)
|
|
|