diff options
| author | Steve Block <steveblock@google.com> | 2011-06-08 08:26:01 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-06-08 08:26:01 -0700 |
| commit | 3742ac093d35d923c81693096ab6671e9b147700 (patch) | |
| tree | c2add9100f789dad45ef1ec5328bddde02c47a4c /Source/WebCore/rendering/RenderLayerBacking.cpp | |
| parent | 901401d90459bc22580842455d4588b9a697514d (diff) | |
| parent | e5926f4a0d6adc9ad4a75824129f117181953560 (diff) | |
| download | external_webkit-3742ac093d35d923c81693096ab6671e9b147700.zip external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.gz external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.bz2 | |
Merge changes I55c6d71a,Ifb3277d4,Ia1b847a2,I7ba9cf3f,Ida2b2a8a,I1280ec90,I72f818d5,I2e3b588b,I9a4e6289,Ia724c78b,Icd8612c8,Ie31b15d7,Ie125edae,I77941a88,I89dae78b,I3516e5ca,I1a4c17b5,I2c4ecc1a,I9c8e6537,Ifac13115,Ie1f80e09,Ia541ed77,I60ce9d78
* changes:
Merge WebKit at r82507: Update ThirdPartyProject.prop
Merge WebKit at r82507: Cherry-pick change r88166 to add INSPECTOR guards to ScriptProfiler
Merge WebKit at r82507: Work around a V8 bug
Merge WebKit at r82507: JNIType renamed to JavaType
Merge WebKit at r82507: IconDatabaseClient interface expanded
Merge WebKit at r82507: Don't use new loss-free code path in HTMLCanvasElement::toDataURL()
Merge WebKit at r82507: IcondDatabaseBase::iconForPageURL() renamed
Merge WebKit at r82507: IconDatabaseBase::Open() signature changed
Merge WebKit at r82507: Node::isContentEditable() renamed
Merge WebKit at r82507: Use icon database through IconDatabaseBase
Merge WebKit at r82507: toInputElement() is now a member of Node
Merge WebKit at r82507: FrameLoaderClient::objectContentType() signature changed
Merge WebKit at r82507: StringImpl::computeHash() removed
Merge WebKit at r82507: Stub out FontPlatformData::setOrientation()
Merge WebKit at r82507: Path::strokeBoundingRect() is now const
Merge WebKit at r82507: Add missing UnusedParam.h include in ApplicationCacheGroup.cpp
Merge WebKit at r82507: Continue to use Android's version of FontPlatformData.h
Merge WebKit at r82507: Update signature of FontCustomPlatformData::fontPlatformData()
Merge WebKit at r82507: Fix conflicts due to JNI refactoring
Merge WebKit at r82507: Fix conflicts due to new StorageTracker
Merge WebKit at r82507: Fix conflicts
Merge WebKit at r82507: Fix makefiles
Merge WebKit at r82507: Initial merge by git
Diffstat (limited to 'Source/WebCore/rendering/RenderLayerBacking.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RenderLayerBacking.cpp | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/Source/WebCore/rendering/RenderLayerBacking.cpp b/Source/WebCore/rendering/RenderLayerBacking.cpp index bda34ee..26a10dd 100644 --- a/Source/WebCore/rendering/RenderLayerBacking.cpp +++ b/Source/WebCore/rendering/RenderLayerBacking.cpp @@ -380,6 +380,7 @@ void RenderLayerBacking::updateGraphicsLayerGeometry() IntSize oldOffsetFromRenderer = m_graphicsLayer->offsetFromRenderer(); m_graphicsLayer->setOffsetFromRenderer(localCompositingBounds.location() - IntPoint()); + // If the compositing layer offset changes, we need to repaint. if (oldOffsetFromRenderer != m_graphicsLayer->offsetFromRenderer()) m_graphicsLayer->setNeedsDisplay(); @@ -449,10 +450,9 @@ void RenderLayerBacking::updateGraphicsLayerGeometry() FloatPoint foregroundPosition; FloatSize foregroundSize = newSize; IntSize foregroundOffset = m_graphicsLayer->offsetFromRenderer(); - // If we have a clipping layer (which clips descendants), then the foreground layer is a child of it, - // so that it gets correctly sorted with children. In that case, position relative to the clipping layer. if (m_clippingLayer) { - foregroundPosition = FloatPoint() + (localCompositingBounds.location() - clippingBox.location()); + // If we have a clipping layer (which clips descendants), then the foreground layer is a child of it, + // so that it gets correctly sorted with children. In that case, position relative to the clipping layer. foregroundSize = FloatSize(clippingBox.size()); foregroundOffset = clippingBox.location() - IntPoint(); } @@ -930,18 +930,6 @@ IntRect RenderLayerBacking::contentsBox() const return contentsRect; } -// Map the given point from coordinates in the GraphicsLayer to RenderLayer coordinates. -FloatPoint RenderLayerBacking::graphicsLayerToContentsCoordinates(const GraphicsLayer* graphicsLayer, const FloatPoint& point) -{ - return point + FloatSize(graphicsLayer->offsetFromRenderer()); -} - -// Map the given point from coordinates in the RenderLayer to GraphicsLayer coordinates. -FloatPoint RenderLayerBacking::contentsToGraphicsLayerCoordinates(const GraphicsLayer* graphicsLayer, const FloatPoint& point) -{ - return point - FloatSize(graphicsLayer->offsetFromRenderer()); -} - bool RenderLayerBacking::paintingGoesToWindow() const { if (m_owningLayer->isRootLayer()) @@ -966,21 +954,21 @@ void RenderLayerBacking::setContentsNeedDisplay() void RenderLayerBacking::setContentsNeedDisplayInRect(const IntRect& r) { if (m_graphicsLayer && m_graphicsLayer->drawsContent()) { - FloatPoint dirtyOrigin = contentsToGraphicsLayerCoordinates(m_graphicsLayer.get(), FloatPoint(r.x(), r.y())); - FloatRect dirtyRect(dirtyOrigin, r.size()); - FloatRect bounds(FloatPoint(), m_graphicsLayer->size()); - if (bounds.intersects(dirtyRect)) - m_graphicsLayer->setNeedsDisplayInRect(dirtyRect); + IntRect layerDirtyRect = r; + layerDirtyRect.move(-m_graphicsLayer->offsetFromRenderer()); + m_graphicsLayer->setNeedsDisplayInRect(layerDirtyRect); } if (m_foregroundLayer && m_foregroundLayer->drawsContent()) { - // FIXME: do incremental repaint - m_foregroundLayer->setNeedsDisplay(); + IntRect layerDirtyRect = r; + layerDirtyRect.move(-m_foregroundLayer->offsetFromRenderer()); + m_foregroundLayer->setNeedsDisplayInRect(layerDirtyRect); } if (m_maskLayer && m_maskLayer->drawsContent()) { - // FIXME: do incremental repaint - m_maskLayer->setNeedsDisplay(); + IntRect layerDirtyRect = r; + layerDirtyRect.move(-m_maskLayer->offsetFromRenderer()); + m_maskLayer->setNeedsDisplayInRect(layerDirtyRect); } } @@ -1123,32 +1111,27 @@ void RenderLayerBacking::paintIntoLayer(RenderLayer* rootLayer, GraphicsContext* } // Up-call from compositing layer drawing callback. -void RenderLayerBacking::paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const IntRect& clip) +void RenderLayerBacking::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const IntRect& clip) { InspectorInstrumentationCookie cookie = InspectorInstrumentation::willPaint(m_owningLayer->renderer()->frame(), clip); - // We have to use the same root as for hit testing, because both methods - // can compute and cache clipRects. - IntRect enclosingBBox = compositedBounds(); + IntSize offset = graphicsLayer->offsetFromRenderer(); + context.translate(-offset); + + IntRect clipRect(clip); + clipRect.move(offset); + + // The dirtyRect is in the coords of the painting root. + IntRect dirtyRect = compositedBounds(); #if ENABLE(ANDROID_OVERFLOW_SCROLL) // If we encounter a scrollable layer, layers inside the scrollable layer // will need their entire content recorded. if (m_owningLayer->hasOverflowParent()) - enclosingBBox.setSize(clip.size()); + dirtyRect.setSize(clip.size()); #endif - - IntRect clipRect(clip); - - // Set up the coordinate space to be in the layer's rendering coordinates. - context.translate(-enclosingBBox.x(), -enclosingBBox.y()); - - // Offset the clip. - clipRect.move(enclosingBBox.x(), enclosingBBox.y()); - - // The dirtyRect is in the coords of the painting root. - IntRect dirtyRect = enclosingBBox; dirtyRect.intersect(clipRect); + // We have to use the same root as for hit testing, because both methods can compute and cache clipRects. paintIntoLayer(m_owningLayer, &context, dirtyRect, PaintBehaviorNormal, paintingPhase, renderer()); InspectorInstrumentation::didPaint(cookie); |
