2009-06-23 Simon Fraser <simon.fraser@apple.com>

        Reviewed by Darin Adler.

        <rdar://problem/6997929> Assertion at WebCore::RenderLayer::updateClipRects with hardware acceleration

        The updatingControlTints() painting pass goes through compositing layer boundaries,
        so we need to ensure we don't cache clip rects computed with the wrong root by
        setting temporaryClipRects to true.

        * rendering/RenderLayer.cpp:
        (WebCore::RenderLayer::paintLayer):

        * rendering/RenderLayerBacking.cpp:
        (WebCore::RenderLayerBacking::contentOffsetInCompostingLayer):
        Remove a printf that I left in by mistake.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@44996 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 45eefea1
2009-06-23 Simon Fraser <simon.fraser@apple.com>
Reviewed by Darin Adler.
<rdar://problem/6997929> Assertion at WebCore::RenderLayer::updateClipRects with hardware acceleration
The updatingControlTints() painting pass goes through compositing layer boundaries,
so we need to ensure we don't cache clip rects computed with the wrong root by
setting temporaryClipRects to true.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayer):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::contentOffsetInCompostingLayer):
Remove a printf that I left in by mistake.
2009-06-23 Anders Carlsson <andersca@apple.com>
Reviewed by Darin Adler.
......
......@@ -1936,9 +1936,16 @@ void RenderLayer::paintLayer(RenderLayer* rootLayer, GraphicsContext* p,
bool appliedTransform, bool temporaryClipRects)
{
#if USE(ACCELERATED_COMPOSITING)
// Composited RenderLayers are painted via the backing's paintIntoLayer().
if (isComposited() && !backing()->paintingGoesToWindow() && !p->updatingControlTints())
return;
if (isComposited()) {
// The updatingControlTints() painting pass goes through compositing layers,
// but we need to ensure that we don't cache clip rects computed with the wrong root in this case.
if (p->updatingControlTints())
temporaryClipRects = true;
else if (!backing()->paintingGoesToWindow()) {
// If this RenderLayer should paint into its backing, that will be done via RenderLayerBacking::paintIntoLayer().
return;
}
}
#endif
// Avoid painting layers when stylesheets haven't loaded. This eliminates FOUC.
......
......@@ -657,9 +657,6 @@ FloatPoint RenderLayerBacking::computePerspectiveOrigin(const IntRect& borderBox
// Return the offset from the top-left of this compositing layer at which the renderer's contents are painted.
IntSize RenderLayerBacking::contentOffsetInCompostingLayer()
{
if (m_compositedBounds != compositor()->calculateCompositedBounds(m_owningLayer, m_owningLayer) && !compositor()->compositingLayersNeedUpdate())
fprintf(stderr, "Stale compositing offset\n");
return IntSize(-m_compositedBounds.x(), -m_compositedBounds.y());
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment