| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 , m_hasVisibleContent(false) | 142 , m_hasVisibleContent(false) |
| 143 , m_visibleDescendantStatusDirty(false) | 143 , m_visibleDescendantStatusDirty(false) |
| 144 , m_hasVisibleDescendant(false) | 144 , m_hasVisibleDescendant(false) |
| 145 , m_hasVisibleNonLayerContent(false) | 145 , m_hasVisibleNonLayerContent(false) |
| 146 #if ENABLE(ASSERT) | 146 #if ENABLE(ASSERT) |
| 147 , m_needsPositionUpdate(true) | 147 , m_needsPositionUpdate(true) |
| 148 #endif | 148 #endif |
| 149 , m_3DTransformedDescendantStatusDirty(true) | 149 , m_3DTransformedDescendantStatusDirty(true) |
| 150 , m_has3DTransformedDescendant(false) | 150 , m_has3DTransformedDescendant(false) |
| 151 , m_containsDirtyOverlayScrollbars(false) | 151 , m_containsDirtyOverlayScrollbars(false) |
| 152 , m_hasFilterInfo(false) | |
| 153 , m_needsAncestorDependentCompositingInputsUpdate(true) | 152 , m_needsAncestorDependentCompositingInputsUpdate(true) |
| 154 , m_needsDescendantDependentCompositingInputsUpdate(true) | 153 , m_needsDescendantDependentCompositingInputsUpdate(true) |
| 155 , m_childNeedsCompositingInputsUpdate(true) | 154 , m_childNeedsCompositingInputsUpdate(true) |
| 156 , m_hasCompositingDescendant(false) | 155 , m_hasCompositingDescendant(false) |
| 157 , m_hasNonCompositedChild(false) | 156 , m_hasNonCompositedChild(false) |
| 158 , m_shouldIsolateCompositedDescendants(false) | 157 , m_shouldIsolateCompositedDescendants(false) |
| 159 , m_lostGroupedMapping(false) | 158 , m_lostGroupedMapping(false) |
| 160 , m_needsRepaint(false) | 159 , m_needsRepaint(false) |
| 161 , m_previousPaintResult(PaintLayerPainter::FullyPainted) | 160 , m_previousPaintResult(PaintLayerPainter::FullyPainted) |
| 162 , m_needsPaintPhaseDescendantOutlines(false) | 161 , m_needsPaintPhaseDescendantOutlines(false) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 186 updateScrollableArea(); | 185 updateScrollableArea(); |
| 187 } | 186 } |
| 188 | 187 |
| 189 PaintLayer::~PaintLayer() | 188 PaintLayer::~PaintLayer() |
| 190 { | 189 { |
| 191 if (layoutObject()->frame() && layoutObject()->frame()->page()) { | 190 if (layoutObject()->frame() && layoutObject()->frame()->page()) { |
| 192 if (ScrollingCoordinator* scrollingCoordinator = layoutObject()->frame()
->page()->scrollingCoordinator()) | 191 if (ScrollingCoordinator* scrollingCoordinator = layoutObject()->frame()
->page()->scrollingCoordinator()) |
| 193 scrollingCoordinator->willDestroyLayer(this); | 192 scrollingCoordinator->willDestroyLayer(this); |
| 194 } | 193 } |
| 195 | 194 |
| 196 removeFilterInfoIfNeeded(); | |
| 197 | |
| 198 if (groupedMapping()) { | 195 if (groupedMapping()) { |
| 199 DisableCompositingQueryAsserts disabler; | 196 DisableCompositingQueryAsserts disabler; |
| 200 setGroupedMapping(0, InvalidateLayerAndRemoveFromMapping); | 197 setGroupedMapping(0, InvalidateLayerAndRemoveFromMapping); |
| 201 } | 198 } |
| 202 | 199 |
| 203 // Child layers will be deleted by their corresponding layout objects, so | 200 // Child layers will be deleted by their corresponding layout objects, so |
| 204 // we don't need to delete them ourselves. | 201 // we don't need to delete them ourselves. |
| 205 | 202 |
| 206 clearCompositedLayerMapping(true); | 203 clearCompositedLayerMapping(true); |
| 207 | 204 |
| (...skipping 2399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2607 FilterOperations PaintLayer::computeFilterOperations(const ComputedStyle& style)
const | 2604 FilterOperations PaintLayer::computeFilterOperations(const ComputedStyle& style)
const |
| 2608 { | 2605 { |
| 2609 return computeFilterOperationsHandleReferenceFilters(style.filter(), style.e
ffectiveZoom(), enclosingNode()); | 2606 return computeFilterOperationsHandleReferenceFilters(style.filter(), style.e
ffectiveZoom(), enclosingNode()); |
| 2610 } | 2607 } |
| 2611 | 2608 |
| 2612 FilterOperations PaintLayer::computeBackdropFilterOperations(const ComputedStyle
& style) const | 2609 FilterOperations PaintLayer::computeBackdropFilterOperations(const ComputedStyle
& style) const |
| 2613 { | 2610 { |
| 2614 return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(),
style.effectiveZoom(), enclosingNode()); | 2611 return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(),
style.effectiveZoom(), enclosingNode()); |
| 2615 } | 2612 } |
| 2616 | 2613 |
| 2614 PaintLayerFilterInfo& PaintLayer::ensureFilterInfo() |
| 2615 { |
| 2616 PaintLayerRareData& rareData = ensureRareData(); |
| 2617 if (!rareData.filterInfo) |
| 2618 rareData.filterInfo = adoptPtr(new PaintLayerFilterInfo(this)); |
| 2619 return *rareData.filterInfo; |
| 2620 } |
| 2621 |
| 2617 void PaintLayer::updateOrRemoveFilterClients() | 2622 void PaintLayer::updateOrRemoveFilterClients() |
| 2618 { | 2623 { |
| 2619 if (!hasFilter()) { | 2624 if (!hasFilter() && m_rareData) { |
| 2620 removeFilterInfoIfNeeded(); | 2625 m_rareData->filterInfo = nullptr; |
| 2621 return; | 2626 } else if (layoutObject()->style()->filter().hasReferenceFilter()) { |
| 2627 ensureFilterInfo().updateReferenceFilterClients(layoutObject()->style()-
>filter()); |
| 2628 } else if (filterInfo()) { |
| 2629 filterInfo()->clearFilterReferences(); |
| 2622 } | 2630 } |
| 2623 | |
| 2624 if (layoutObject()->style()->filter().hasReferenceFilter()) | |
| 2625 ensureFilterInfo()->updateReferenceFilterClients(layoutObject()->style()
->filter()); | |
| 2626 else if (hasFilterInfo()) | |
| 2627 filterInfo()->clearFilterReferences(); | |
| 2628 } | 2631 } |
| 2629 | 2632 |
| 2630 FilterEffectBuilder* PaintLayer::updateFilterEffectBuilder() const | 2633 FilterEffectBuilder* PaintLayer::updateFilterEffectBuilder() const |
| 2631 { | 2634 { |
| 2632 // TODO(chrishtr): ensure (and assert) that compositing is clean here. | 2635 // TODO(chrishtr): ensure (and assert) that compositing is clean here. |
| 2633 | 2636 |
| 2634 if (!paintsWithFilters()) | 2637 if (!paintsWithFilters()) |
| 2635 return nullptr; | 2638 return nullptr; |
| 2636 | 2639 |
| 2637 PaintLayerFilterInfo* filterInfo = this->filterInfo(); | 2640 PaintLayerFilterInfo* filterInfo = this->filterInfo(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2676 // mode might have changed for this layer. | 2679 // mode might have changed for this layer. |
| 2677 if (!paintsWithFilters()) { | 2680 if (!paintsWithFilters()) { |
| 2678 // Don't delete the whole filter info here, because we might use it | 2681 // Don't delete the whole filter info here, because we might use it |
| 2679 // for loading CSS shader files. | 2682 // for loading CSS shader files. |
| 2680 if (PaintLayerFilterInfo* filterInfo = this->filterInfo()) | 2683 if (PaintLayerFilterInfo* filterInfo = this->filterInfo()) |
| 2681 filterInfo->setBuilder(nullptr); | 2684 filterInfo->setBuilder(nullptr); |
| 2682 | 2685 |
| 2683 return; | 2686 return; |
| 2684 } | 2687 } |
| 2685 | 2688 |
| 2686 ensureFilterInfo()->setBuilder(nullptr); | 2689 ensureFilterInfo().setBuilder(nullptr); |
| 2687 } | 2690 } |
| 2688 | 2691 |
| 2689 void PaintLayer::filterNeedsPaintInvalidation() | 2692 void PaintLayer::filterNeedsPaintInvalidation() |
| 2690 { | 2693 { |
| 2691 { | 2694 { |
| 2692 DeprecatedScheduleStyleRecalcDuringLayout marker(layoutObject()->documen
t().lifecycle()); | 2695 DeprecatedScheduleStyleRecalcDuringLayout marker(layoutObject()->documen
t().lifecycle()); |
| 2693 // It's possible for scheduleSVGFilterLayerUpdateHack to schedule a styl
e recalc, which | 2696 // It's possible for scheduleSVGFilterLayerUpdateHack to schedule a styl
e recalc, which |
| 2694 // is a problem because this function can be called right before perform
ing layout but | 2697 // is a problem because this function can be called right before perform
ing layout but |
| 2695 // after style recalc. | 2698 // after style recalc. |
| 2696 // | 2699 // |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2814 | 2817 |
| 2815 void showLayerTree(const blink::LayoutObject* layoutObject) | 2818 void showLayerTree(const blink::LayoutObject* layoutObject) |
| 2816 { | 2819 { |
| 2817 if (!layoutObject) { | 2820 if (!layoutObject) { |
| 2818 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); | 2821 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); |
| 2819 return; | 2822 return; |
| 2820 } | 2823 } |
| 2821 showLayerTree(layoutObject->enclosingLayer()); | 2824 showLayerTree(layoutObject->enclosingLayer()); |
| 2822 } | 2825 } |
| 2823 #endif | 2826 #endif |
| OLD | NEW |