| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/paint/LayerPainter.h" | 6 #include "core/paint/LayerPainter.h" |
| 7 | 7 |
| 8 #include "core/frame/Settings.h" | 8 #include "core/frame/Settings.h" |
| 9 #include "core/layout/Layer.h" | 9 #include "core/layout/Layer.h" |
| 10 #include "core/page/Page.h" | 10 #include "core/page/Page.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 { | 32 { |
| 33 // Avoid painting descendants of the root layer when stylesheets haven't loa
ded. This eliminates FOUC. | 33 // Avoid painting descendants of the root layer when stylesheets haven't loa
ded. This eliminates FOUC. |
| 34 // It's ok not to draw, because later on, when all the stylesheets do load,
updateStyleSelector on the Document | 34 // It's ok not to draw, because later on, when all the stylesheets do load,
updateStyleSelector on the Document |
| 35 // will do a full paintInvalidationForWholeRenderer(). | 35 // will do a full paintInvalidationForWholeRenderer(). |
| 36 if (layer->renderer()->document().didLayoutWithPendingStylesheets() && !laye
r->isRootLayer() && !layer->renderer()->isDocumentElement()) | 36 if (layer->renderer()->document().didLayoutWithPendingStylesheets() && !laye
r->isRootLayer() && !layer->renderer()->isDocumentElement()) |
| 37 return true; | 37 return true; |
| 38 | 38 |
| 39 return false; | 39 return false; |
| 40 } | 40 } |
| 41 | 41 |
| 42 void LayerPainter::paint(GraphicsContext* context, const LayoutRect& damageRect,
PaintBehavior paintBehavior, RenderObject* paintingRoot, PaintLayerFlags paintF
lags) | 42 void LayerPainter::paint(GraphicsContext* context, const LayoutRect& damageRect,
PaintBehavior paintBehavior, LayoutObject* paintingRoot, PaintLayerFlags paintF
lags) |
| 43 { | 43 { |
| 44 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); | 44 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); |
| 45 if (shouldPaintLayerInSoftwareMode(paintingInfo, paintFlags)) | 45 if (shouldPaintLayerInSoftwareMode(paintingInfo, paintFlags)) |
| 46 paintLayer(context, paintingInfo, paintFlags); | 46 paintLayer(context, paintingInfo, paintFlags); |
| 47 } | 47 } |
| 48 | 48 |
| 49 static ShouldRespectOverflowClip shouldRespectOverflowClip(PaintLayerFlags paint
Flags, const RenderObject* renderer) | 49 static ShouldRespectOverflowClip shouldRespectOverflowClip(PaintLayerFlags paint
Flags, const LayoutObject* renderer) |
| 50 { | 50 { |
| 51 return (paintFlags & PaintLayerPaintingOverflowContents || (paintFlags & Pai
ntLayerPaintingChildClippingMaskPhase && renderer->hasClipPath())) ? IgnoreOverf
lowClip : RespectOverflowClip; | 51 return (paintFlags & PaintLayerPaintingOverflowContents || (paintFlags & Pai
ntLayerPaintingChildClippingMaskPhase && renderer->hasClipPath())) ? IgnoreOverf
lowClip : RespectOverflowClip; |
| 52 } | 52 } |
| 53 | 53 |
| 54 void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
paintingInfo, PaintLayerFlags paintFlags) | 54 void LayerPainter::paintLayer(GraphicsContext* context, const LayerPaintingInfo&
paintingInfo, PaintLayerFlags paintFlags) |
| 55 { | 55 { |
| 56 // https://code.google.com/p/chromium/issues/detail?id=343772 | 56 // https://code.google.com/p/chromium/issues/detail?id=343772 |
| 57 DisableCompositingQueryAsserts disabler; | 57 DisableCompositingQueryAsserts disabler; |
| 58 | 58 |
| 59 if (m_renderLayer.compositingState() != NotComposited) { | 59 if (m_renderLayer.compositingState() != NotComposited) { |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer()), &of
fsetFromRoot, localPaintingInfo.subPixelAccumulation); | 234 shouldRespectOverflowClip(paintFlags, m_renderLayer.renderer()), &of
fsetFromRoot, localPaintingInfo.subPixelAccumulation); |
| 235 if (shouldPaintContent) | 235 if (shouldPaintContent) |
| 236 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect(layerFra
gments, localPaintingInfo, paintFlags, offsetFromRoot); | 236 shouldPaintContent = atLeastOneFragmentIntersectsDamageRect(layerFra
gments, localPaintingInfo, paintFlags, offsetFromRoot); |
| 237 } | 237 } |
| 238 | 238 |
| 239 bool selectionOnly = localPaintingInfo.paintBehavior & PaintBehaviorSelectio
nOnly; | 239 bool selectionOnly = localPaintingInfo.paintBehavior & PaintBehaviorSelectio
nOnly; |
| 240 // If this layer's renderer is a child of the paintingRoot, we render uncond
itionally, which | 240 // If this layer's renderer is a child of the paintingRoot, we render uncond
itionally, which |
| 241 // is done by passing a nil paintingRoot down to our renderer (as if no pain
tingRoot was ever set). | 241 // is done by passing a nil paintingRoot down to our renderer (as if no pain
tingRoot was ever set). |
| 242 // Else, our renderer tree may or may not contain the painting root, so we p
ass that root along | 242 // Else, our renderer tree may or may not contain the painting root, so we p
ass that root along |
| 243 // so it will be tested against as we descend through the renderers. | 243 // so it will be tested against as we descend through the renderers. |
| 244 RenderObject* paintingRootForRenderer = 0; | 244 LayoutObject* paintingRootForRenderer = 0; |
| 245 if (localPaintingInfo.paintingRoot && !m_renderLayer.renderer()->isDescendan
tOf(localPaintingInfo.paintingRoot)) | 245 if (localPaintingInfo.paintingRoot && !m_renderLayer.renderer()->isDescendan
tOf(localPaintingInfo.paintingRoot)) |
| 246 paintingRootForRenderer = localPaintingInfo.paintingRoot; | 246 paintingRootForRenderer = localPaintingInfo.paintingRoot; |
| 247 | 247 |
| 248 { // Begin block for the lifetime of any filter. | 248 { // Begin block for the lifetime of any filter. |
| 249 FilterPainter filterPainter(m_renderLayer, context, offsetFromRoot, laye
rFragments.isEmpty() ? ClipRect() : layerFragments[0].backgroundRect, localPaint
ingInfo, paintFlags, | 249 FilterPainter filterPainter(m_renderLayer, context, offsetFromRoot, laye
rFragments.isEmpty() ? ClipRect() : layerFragments[0].backgroundRect, localPaint
ingInfo, paintFlags, |
| 250 rootRelativeBounds, rootRelativeBoundsComputed); | 250 rootRelativeBounds, rootRelativeBoundsComputed); |
| 251 | 251 |
| 252 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText))
; | 252 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText))
; |
| 253 | 253 |
| 254 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPai
ntContent && !selectionOnly; | 254 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPai
ntContent && !selectionOnly; |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 | 596 |
| 597 // Move to the next position. | 597 // Move to the next position. |
| 598 LayoutUnit blockDelta = isHorizontal ? colRect.height() : colRect.width(
); | 598 LayoutUnit blockDelta = isHorizontal ? colRect.height() : colRect.width(
); |
| 599 if (columnBlock->style()->isFlippedBlocksWritingMode()) | 599 if (columnBlock->style()->isFlippedBlocksWritingMode()) |
| 600 currLogicalTopOffset += blockDelta; | 600 currLogicalTopOffset += blockDelta; |
| 601 else | 601 else |
| 602 currLogicalTopOffset -= blockDelta; | 602 currLogicalTopOffset -= blockDelta; |
| 603 } | 603 } |
| 604 } | 604 } |
| 605 | 605 |
| 606 void LayerPainter::paintFragmentWithPhase(PaintPhase phase, const LayerFragment&
fragment, GraphicsContext* context, const ClipRect& clipRect, const LayerPainti
ngInfo& paintingInfo, PaintBehavior paintBehavior, RenderObject* paintingRootFor
Renderer, PaintLayerFlags paintFlags, ClipState clipState) | 606 void LayerPainter::paintFragmentWithPhase(PaintPhase phase, const LayerFragment&
fragment, GraphicsContext* context, const ClipRect& clipRect, const LayerPainti
ngInfo& paintingInfo, PaintBehavior paintBehavior, LayoutObject* paintingRootFor
Renderer, PaintLayerFlags paintFlags, ClipState clipState) |
| 607 { | 607 { |
| 608 OwnPtr<LayerClipRecorder> clipRecorder; | 608 OwnPtr<LayerClipRecorder> clipRecorder; |
| 609 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && needsToClip(p
aintingInfo, clipRect)) { | 609 if (clipState != HasClipped && paintingInfo.clipToDirtyRect && needsToClip(p
aintingInfo, clipRect)) { |
| 610 DisplayItem::Type clipType = DisplayItem::paintPhaseToClipLayerFragmentT
ype(phase); | 610 DisplayItem::Type clipType = DisplayItem::paintPhaseToClipLayerFragmentT
ype(phase); |
| 611 LayerClipRecorder::BorderRadiusClippingRule clippingRule; | 611 LayerClipRecorder::BorderRadiusClippingRule clippingRule; |
| 612 switch (phase) { | 612 switch (phase) { |
| 613 case PaintPhaseBlockBackground: // Background painting will handle clipp
ing to self. | 613 case PaintPhaseBlockBackground: // Background painting will handle clipp
ing to self. |
| 614 case PaintPhaseSelfOutline: | 614 case PaintPhaseSelfOutline: |
| 615 case PaintPhaseMask: // Mask painting will handle clipping to self. | 615 case PaintPhaseMask: // Mask painting will handle clipping to self. |
| 616 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; | 616 clippingRule = LayerClipRecorder::DoNotIncludeSelfForBorderRadius; |
| 617 break; | 617 break; |
| 618 default: | 618 default: |
| 619 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; | 619 clippingRule = LayerClipRecorder::IncludeSelfForBorderRadius; |
| 620 break; | 620 break; |
| 621 } | 621 } |
| 622 | 622 |
| 623 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, clipType, clipRect, &paintingInfo, fragment.paginationOffset, paintFlag
s, clippingRule)); | 623 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, clipType, clipRect, &paintingInfo, fragment.paginationOffset, paintFlag
s, clippingRule)); |
| 624 } | 624 } |
| 625 | 625 |
| 626 PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, pa
intBehavior, paintingRootForRenderer, 0, paintingInfo.rootLayer->renderer()); | 626 PaintInfo paintInfo(context, pixelSnappedIntRect(clipRect.rect()), phase, pa
intBehavior, paintingRootForRenderer, 0, paintingInfo.rootLayer->renderer()); |
| 627 m_renderLayer.renderer()->paint(paintInfo, toPoint(fragment.layerBounds.loca
tion() - m_renderLayer.renderBoxLocation() + subPixelAccumulationIfNeeded(painti
ngInfo.subPixelAccumulation, m_renderLayer.compositingState()))); | 627 m_renderLayer.renderer()->paint(paintInfo, toPoint(fragment.layerBounds.loca
tion() - m_renderLayer.renderBoxLocation() + subPixelAccumulationIfNeeded(painti
ngInfo.subPixelAccumulation, m_renderLayer.compositingState()))); |
| 628 } | 628 } |
| 629 | 629 |
| 630 void LayerPainter::paintBackgroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, | 630 void LayerPainter::paintBackgroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, |
| 631 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, | 631 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, |
| 632 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 632 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
| 633 { | 633 { |
| 634 for (const auto& fragment: layerFragments) { | 634 for (const auto& fragment: layerFragments) { |
| 635 paintFragmentWithPhase(PaintPhaseBlockBackground, fragment, context, fra
gment.backgroundRect, localPaintingInfo, paintBehavior, paintingRootForRenderer,
paintFlags, HasNotClipped); | 635 paintFragmentWithPhase(PaintPhaseBlockBackground, fragment, context, fra
gment.backgroundRect, localPaintingInfo, paintBehavior, paintingRootForRenderer,
paintFlags, HasNotClipped); |
| 636 } | 636 } |
| 637 } | 637 } |
| 638 | 638 |
| 639 void LayerPainter::paintForegroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, | 639 void LayerPainter::paintForegroundForFragments(const LayerFragments& layerFragme
nts, GraphicsContext* context, |
| 640 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, | 640 const LayoutRect& transparencyPaintDirtyRect, const LayerPaintingInfo& local
PaintingInfo, PaintBehavior paintBehavior, |
| 641 RenderObject* paintingRootForRenderer, bool selectionOnly, PaintLayerFlags p
aintFlags) | 641 LayoutObject* paintingRootForRenderer, bool selectionOnly, PaintLayerFlags p
aintFlags) |
| 642 { | 642 { |
| 643 // Optimize clipping for the single fragment case. | 643 // Optimize clipping for the single fragment case. |
| 644 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size()
== 1 && !layerFragments[0].foregroundRect.isEmpty(); | 644 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size()
== 1 && !layerFragments[0].foregroundRect.isEmpty(); |
| 645 ClipState clipState = HasNotClipped; | 645 ClipState clipState = HasNotClipped; |
| 646 OwnPtr<LayerClipRecorder> clipRecorder; | 646 OwnPtr<LayerClipRecorder> clipRecorder; |
| 647 if (shouldClip && needsToClip(localPaintingInfo, layerFragments[0].foregroun
dRect)) { | 647 if (shouldClip && needsToClip(localPaintingInfo, layerFragments[0].foregroun
dRect)) { |
| 648 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, DisplayItem::ClipLayerForeground, layerFragments[0].foregroundRect, &lo
calPaintingInfo, layerFragments[0].paginationOffset, paintFlags)); | 648 clipRecorder = adoptPtr(new LayerClipRecorder(m_renderLayer.renderer(),
context, DisplayItem::ClipLayerForeground, layerFragments[0].foregroundRect, &lo
calPaintingInfo, layerFragments[0].paginationOffset, paintFlags)); |
| 649 clipState = HasClipped; | 649 clipState = HasClipped; |
| 650 } | 650 } |
| 651 | 651 |
| 652 // We have to loop through every fragment multiple times, since we have to i
ssue paint invalidations in each specific phase in order for | 652 // We have to loop through every fragment multiple times, since we have to i
ssue paint invalidations in each specific phase in order for |
| 653 // interleaving of the fragments to work properly. | 653 // interleaving of the fragments to work properly. |
| 654 paintForegroundForFragmentsWithPhase(selectionOnly ? PaintPhaseSelection : P
aintPhaseChildBlockBackgrounds, layerFragments, | 654 paintForegroundForFragmentsWithPhase(selectionOnly ? PaintPhaseSelection : P
aintPhaseChildBlockBackgrounds, layerFragments, |
| 655 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain
tFlags, clipState); | 655 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain
tFlags, clipState); |
| 656 | 656 |
| 657 if (!selectionOnly) { | 657 if (!selectionOnly) { |
| 658 paintForegroundForFragmentsWithPhase(PaintPhaseFloat, layerFragments, co
ntext, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cl
ipState); | 658 paintForegroundForFragmentsWithPhase(PaintPhaseFloat, layerFragments, co
ntext, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cl
ipState); |
| 659 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragment
s, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag
s, clipState); | 659 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragment
s, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag
s, clipState); |
| 660 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragm
ents, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintF
lags, clipState); | 660 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragm
ents, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintF
lags, clipState); |
| 661 } | 661 } |
| 662 } | 662 } |
| 663 | 663 |
| 664 void LayerPainter::paintForegroundForFragmentsWithPhase(PaintPhase phase, const
LayerFragments& layerFragments, GraphicsContext* context, | 664 void LayerPainter::paintForegroundForFragmentsWithPhase(PaintPhase phase, const
LayerFragments& layerFragments, GraphicsContext* context, |
| 665 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Ren
derObject* paintingRootForRenderer, PaintLayerFlags paintFlags, ClipState clipSt
ate) | 665 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Lay
outObject* paintingRootForRenderer, PaintLayerFlags paintFlags, ClipState clipSt
ate) |
| 666 { | 666 { |
| 667 for (const auto& fragment: layerFragments) { | 667 for (const auto& fragment: layerFragments) { |
| 668 if (!fragment.foregroundRect.isEmpty()) | 668 if (!fragment.foregroundRect.isEmpty()) |
| 669 paintFragmentWithPhase(phase, fragment, context, fragment.foreground
Rect, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cli
pState); | 669 paintFragmentWithPhase(phase, fragment, context, fragment.foreground
Rect, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags, cli
pState); |
| 670 } | 670 } |
| 671 } | 671 } |
| 672 | 672 |
| 673 void LayerPainter::paintOutlineForFragments(const LayerFragments& layerFragments
, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo, | 673 void LayerPainter::paintOutlineForFragments(const LayerFragments& layerFragments
, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo, |
| 674 PaintBehavior paintBehavior, RenderObject* paintingRootForRenderer, PaintLay
erFlags paintFlags) | 674 PaintBehavior paintBehavior, LayoutObject* paintingRootForRenderer, PaintLay
erFlags paintFlags) |
| 675 { | 675 { |
| 676 for (const auto& fragment: layerFragments) { | 676 for (const auto& fragment: layerFragments) { |
| 677 if (!fragment.outlineRect.isEmpty()) | 677 if (!fragment.outlineRect.isEmpty()) |
| 678 paintFragmentWithPhase(PaintPhaseSelfOutline, fragment, context, fra
gment.outlineRect, localPaintingInfo, paintBehavior, paintingRootForRenderer, pa
intFlags, HasNotClipped); | 678 paintFragmentWithPhase(PaintPhaseSelfOutline, fragment, context, fra
gment.outlineRect, localPaintingInfo, paintBehavior, paintingRootForRenderer, pa
intFlags, HasNotClipped); |
| 679 } | 679 } |
| 680 } | 680 } |
| 681 | 681 |
| 682 void LayerPainter::paintMaskForFragments(const LayerFragments& layerFragments, G
raphicsContext* context, const LayerPaintingInfo& localPaintingInfo, | 682 void LayerPainter::paintMaskForFragments(const LayerFragments& layerFragments, G
raphicsContext* context, const LayerPaintingInfo& localPaintingInfo, |
| 683 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 683 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
| 684 { | 684 { |
| 685 for (const auto& fragment: layerFragments) | 685 for (const auto& fragment: layerFragments) |
| 686 paintFragmentWithPhase(PaintPhaseMask, fragment, context, fragment.backg
roundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRenderer, pain
tFlags, HasNotClipped); | 686 paintFragmentWithPhase(PaintPhaseMask, fragment, context, fragment.backg
roundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRenderer, pain
tFlags, HasNotClipped); |
| 687 } | 687 } |
| 688 | 688 |
| 689 void LayerPainter::paintChildClippingMaskForFragments(const LayerFragments& laye
rFragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo
, | 689 void LayerPainter::paintChildClippingMaskForFragments(const LayerFragments& laye
rFragments, GraphicsContext* context, const LayerPaintingInfo& localPaintingInfo
, |
| 690 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags) | 690 LayoutObject* paintingRootForRenderer, PaintLayerFlags paintFlags) |
| 691 { | 691 { |
| 692 for (const auto& fragment: layerFragments) | 692 for (const auto& fragment: layerFragments) |
| 693 paintFragmentWithPhase(PaintPhaseClippingMask, fragment, context, fragme
nt.foregroundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRender
er, paintFlags, HasNotClipped); | 693 paintFragmentWithPhase(PaintPhaseClippingMask, fragment, context, fragme
nt.foregroundRect, localPaintingInfo, PaintBehaviorNormal, paintingRootForRender
er, paintFlags, HasNotClipped); |
| 694 } | 694 } |
| 695 | 695 |
| 696 void LayerPainter::paintOverlayScrollbars(GraphicsContext* context, const Layout
Rect& damageRect, PaintBehavior paintBehavior, RenderObject* paintingRoot) | 696 void LayerPainter::paintOverlayScrollbars(GraphicsContext* context, const Layout
Rect& damageRect, PaintBehavior paintBehavior, LayoutObject* paintingRoot) |
| 697 { | 697 { |
| 698 if (!m_renderLayer.containsDirtyOverlayScrollbars()) | 698 if (!m_renderLayer.containsDirtyOverlayScrollbars()) |
| 699 return; | 699 return; |
| 700 | 700 |
| 701 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); | 701 LayerPaintingInfo paintingInfo(&m_renderLayer, enclosingIntRect(damageRect),
paintBehavior, LayoutSize(), paintingRoot); |
| 702 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 702 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); |
| 703 | 703 |
| 704 m_renderLayer.setContainsDirtyOverlayScrollbars(false); | 704 m_renderLayer.setContainsDirtyOverlayScrollbars(false); |
| 705 } | 705 } |
| 706 | 706 |
| 707 } // namespace blink | 707 } // namespace blink |
| OLD | NEW |