| 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/PaintLayerPainter.h" | 6 #include "core/paint/PaintLayerPainter.h" |
| 7 | 7 |
| 8 #include "core/frame/Settings.h" | 8 #include "core/frame/Settings.h" |
| 9 #include "core/layout/ClipPathOperation.h" | 9 #include "core/layout/ClipPathOperation.h" |
| 10 #include "core/layout/LayoutBlock.h" | 10 #include "core/layout/LayoutBlock.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 if (m_paintLayer.compositingState() != NotComposited) { | 65 if (m_paintLayer.compositingState() != NotComposited) { |
| 66 if (paintingInfo.globalPaintFlags() & GlobalPaintFlattenCompositingLayer
s) { | 66 if (paintingInfo.globalPaintFlags() & GlobalPaintFlattenCompositingLayer
s) { |
| 67 // FIXME: ok, but what about GlobalPaintFlattenCompositingLayers? Th
at's for printing and drag-image. | 67 // FIXME: ok, but what about GlobalPaintFlattenCompositingLayers? Th
at's for printing and drag-image. |
| 68 // FIXME: why isn't the code here global, as opposed to being set on
each paintLayer() call? | 68 // FIXME: why isn't the code here global, as opposed to being set on
each paintLayer() call? |
| 69 paintFlags |= PaintLayerUncachedClipRects; | 69 paintFlags |= PaintLayerUncachedClipRects; |
| 70 } | 70 } |
| 71 } | 71 } |
| 72 | 72 |
| 73 // Non self-painting layers without self-painting descendants don't need to
be painted as their | 73 // Non self-painting layers without self-painting descendants don't need to
be painted as their |
| 74 // layoutObject() should properly paint itself. | 74 // layoutObject() should properly paint itself. |
| 75 if (!m_paintLayer.isSelfPaintingLayer() && !m_paintLayer.hasSelfPaintingLaye
rDescendant()) { | 75 if (!m_paintLayer.isSelfPaintingLayer() && !m_paintLayer.hasSelfPaintingLaye
rDescendant()) |
| 76 ASSERT(!m_paintLayer.needsRepaint() || !RuntimeEnabledFeatures::slimming
PaintV2Enabled()); | |
| 77 return FullyPainted; | 76 return FullyPainted; |
| 78 } | |
| 79 | 77 |
| 80 if (shouldSuppressPaintingLayer(&m_paintLayer)) | 78 if (shouldSuppressPaintingLayer(&m_paintLayer)) |
| 81 return FullyPainted; | 79 return FullyPainted; |
| 82 | 80 |
| 83 // TODO(skyostil): Unify this early-out logic with subsequence caching. | 81 // TODO(skyostil): Unify this early-out logic with subsequence caching. |
| 84 if (m_paintLayer.layoutObject()->isLayoutPart() && toLayoutPart(m_paintLayer
.layoutObject())->isThrottledFrameView()) | 82 if (m_paintLayer.layoutObject()->isLayoutPart() && toLayoutPart(m_paintLayer
.layoutObject())->isThrottledFrameView()) |
| 85 return FullyPainted; | 83 return FullyPainted; |
| 86 | 84 |
| 87 // If this layer is totally invisible then there is nothing to paint. | 85 // If this layer is totally invisible then there is nothing to paint. |
| 88 if (!m_paintLayer.layoutObject()->opacity() && !m_paintLayer.layoutObject()-
>hasBackdropFilter()) | 86 if (!m_paintLayer.layoutObject()->opacity() && !m_paintLayer.layoutObject()-
>hasBackdropFilter()) |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 DisplayItem::Type subsequenceType; | 470 DisplayItem::Type subsequenceType; |
| 473 if (childrenToVisit == NegativeZOrderChildren) { | 471 if (childrenToVisit == NegativeZOrderChildren) { |
| 474 subsequenceType = DisplayItem::SubsequenceNegativeZOrder; | 472 subsequenceType = DisplayItem::SubsequenceNegativeZOrder; |
| 475 } else { | 473 } else { |
| 476 ASSERT(childrenToVisit == (NormalFlowChildren | PositiveZOrderChildren))
; | 474 ASSERT(childrenToVisit == (NormalFlowChildren | PositiveZOrderChildren))
; |
| 477 subsequenceType = DisplayItem::SubsequenceNormalFlowAndPositiveZOrder; | 475 subsequenceType = DisplayItem::SubsequenceNormalFlowAndPositiveZOrder; |
| 478 } | 476 } |
| 479 | 477 |
| 480 Optional<SubsequenceRecorder> subsequenceRecorder; | 478 Optional<SubsequenceRecorder> subsequenceRecorder; |
| 481 if (!paintingInfo.disableSubsequenceCache | 479 if (!paintingInfo.disableSubsequenceCache |
| 480 && !context->printing() |
| 481 && m_paintLayer.isSelfPaintingLayer() |
| 482 && !(paintingInfo.globalPaintFlags() & GlobalPaintFlattenCompositingLaye
rs) | 482 && !(paintingInfo.globalPaintFlags() & GlobalPaintFlattenCompositingLaye
rs) |
| 483 && !(paintFlags & PaintLayerPaintingReflection) | 483 && !(paintFlags & (PaintLayerPaintingReflection | PaintLayerPaintingRoot
BackgroundOnly | PaintLayerPaintingOverlayScrollbars))) { |
| 484 && !(paintFlags & PaintLayerPaintingRootBackgroundOnly)) { | |
| 485 if (!m_paintLayer.needsRepaint() | 484 if (!m_paintLayer.needsRepaint() |
| 486 && paintingInfo.scrollOffsetAccumulation == m_paintLayer.previousScr
ollOffsetAccumulationForPainting() | 485 && paintingInfo.scrollOffsetAccumulation == m_paintLayer.previousScr
ollOffsetAccumulationForPainting() |
| 487 && SubsequenceRecorder::useCachedSubsequenceIfPossible(*context, m_p
aintLayer, subsequenceType)) | 486 && SubsequenceRecorder::useCachedSubsequenceIfPossible(*context, m_p
aintLayer, subsequenceType)) |
| 488 return result; | 487 return result; |
| 489 subsequenceRecorder.emplace(*context, m_paintLayer, subsequenceType); | 488 subsequenceRecorder.emplace(*context, m_paintLayer, subsequenceType); |
| 490 } | 489 } |
| 491 | 490 |
| 492 IntSize scrollOffsetAccumulationForChildren = paintingInfo.scrollOffsetAccum
ulation; | 491 IntSize scrollOffsetAccumulationForChildren = paintingInfo.scrollOffsetAccum
ulation; |
| 493 if (m_paintLayer.layoutObject()->hasOverflowClip()) | 492 if (m_paintLayer.layoutObject()->hasOverflowClip()) |
| 494 scrollOffsetAccumulationForChildren += m_paintLayer.layoutBox()->scrolle
dContentOffset(); | 493 scrollOffsetAccumulationForChildren += m_paintLayer.layoutBox()->scrolle
dContentOffset(); |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 if (!m_paintLayer.containsDirtyOverlayScrollbars()) | 694 if (!m_paintLayer.containsDirtyOverlayScrollbars()) |
| 696 return; | 695 return; |
| 697 | 696 |
| 698 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize(), paintingRoot); | 697 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize(), paintingRoot); |
| 699 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 698 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); |
| 700 | 699 |
| 701 m_paintLayer.setContainsDirtyOverlayScrollbars(false); | 700 m_paintLayer.setContainsDirtyOverlayScrollbars(false); |
| 702 } | 701 } |
| 703 | 702 |
| 704 } // namespace blink | 703 } // namespace blink |
| OLD | NEW |