Index: Source/web/LinkHighlight.cpp |
diff --git a/Source/web/LinkHighlight.cpp b/Source/web/LinkHighlight.cpp |
index 0b51e66ea6a8e6352ddde4c9bb515a6fc7a9d580..02427c9181cbe358b868d3f648e1bf9c41a09049 100644 |
--- a/Source/web/LinkHighlight.cpp |
+++ b/Source/web/LinkHighlight.cpp |
@@ -39,6 +39,7 @@ |
#include "core/rendering/compositing/CompositedLayerMapping.h" |
#include "core/rendering/style/ShadowData.h" |
#include "platform/graphics/Color.h" |
+#include "platform/graphics/DisplayList.h" |
#include "public/platform/Platform.h" |
#include "public/platform/WebCompositorAnimationCurve.h" |
#include "public/platform/WebCompositorSupport.h" |
@@ -236,6 +237,13 @@ bool LinkHighlight::computeHighlightLayerPathAndPosition(RenderLayer* compositin |
bool pathHasChanged = !(newPath == m_path); |
if (pathHasChanged) { |
m_path = newPath; |
+ |
+ GraphicsContext gc(0); |
+ gc.beginRecording(boundingRect); |
+ gc.setFillColor(m_node->renderer()->style()->tapHighlightColor()); |
+ gc.fillPath(m_path); |
+ m_displayList = gc.endRecording(); |
+ |
m_contentLayer->layer()->setBounds(enclosingIntRect(boundingRect).size()); |
} |
@@ -253,9 +261,8 @@ void LinkHighlight::paintContents(WebCanvas* canvas, const WebRect& webClipRect, |
GraphicsContext gc(canvas, |
contextStatus == WebContentLayerClient::GraphicsContextEnabled ? GraphicsContext::NothingDisabled : GraphicsContext::FullyDisabled); |
IntRect clipRect(IntPoint(webClipRect.x, webClipRect.y), IntSize(webClipRect.width, webClipRect.height)); |
- gc.clip(clipRect); |
- gc.setFillColor(m_node->renderer()->style()->tapHighlightColor()); |
- gc.fillPath(m_path); |
+ m_displayList->setClip(clipRect); |
+ gc.drawDisplayList(m_displayList.get()); |
} |
void LinkHighlight::startHighlightAnimationIfNeeded() |