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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
118 , m_hasVisibleContent(false) | 118 , m_hasVisibleContent(false) |
119 , m_visibleDescendantStatusDirty(false) | 119 , m_visibleDescendantStatusDirty(false) |
120 , m_hasVisibleDescendant(false) | 120 , m_hasVisibleDescendant(false) |
121 , m_hasVisibleNonLayerContent(false) | 121 , m_hasVisibleNonLayerContent(false) |
122 , m_isPaginated(false) | 122 , m_isPaginated(false) |
123 , m_3DTransformedDescendantStatusDirty(true) | 123 , m_3DTransformedDescendantStatusDirty(true) |
124 , m_has3DTransformedDescendant(false) | 124 , m_has3DTransformedDescendant(false) |
125 , m_containsDirtyOverlayScrollbars(false) | 125 , m_containsDirtyOverlayScrollbars(false) |
126 , m_canSkipRepaintRectsUpdateOnScroll(renderer->isTableCell()) | 126 , m_canSkipRepaintRectsUpdateOnScroll(renderer->isTableCell()) |
127 , m_hasFilterInfo(false) | 127 , m_hasFilterInfo(false) |
128 , m_needsToRecomputeBounds(true) | |
128 , m_renderer(renderer) | 129 , m_renderer(renderer) |
129 , m_parent(0) | 130 , m_parent(0) |
130 , m_previous(0) | 131 , m_previous(0) |
131 , m_next(0) | 132 , m_next(0) |
132 , m_first(0) | 133 , m_first(0) |
133 , m_last(0) | 134 , m_last(0) |
134 , m_staticInlinePosition(0) | 135 , m_staticInlinePosition(0) |
135 , m_staticBlockPosition(0) | 136 , m_staticBlockPosition(0) |
136 , m_enclosingPaginationLayer(0) | 137 , m_enclosingPaginationLayer(0) |
137 , m_3dRenderingContextRoot(0) | 138 , m_3dRenderingContextRoot(0) |
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1170 { | 1171 { |
1171 const RenderLayer* curr = (includeSelf == IncludeSelf) ? this : parent(); | 1172 const RenderLayer* curr = (includeSelf == IncludeSelf) ? this : parent(); |
1172 for (; curr; curr = curr->parent()) { | 1173 for (; curr; curr = curr->parent()) { |
1173 if (curr->requiresFullLayerImageForFilters()) | 1174 if (curr->requiresFullLayerImageForFilters()) |
1174 return const_cast<RenderLayer*>(curr); | 1175 return const_cast<RenderLayer*>(curr); |
1175 } | 1176 } |
1176 | 1177 |
1177 return 0; | 1178 return 0; |
1178 } | 1179 } |
1179 | 1180 |
1181 void RenderLayer::clearNeedsToRecomputeBounds() | |
1182 { | |
1183 m_needsToRecomputeBounds = false; | |
1184 } | |
1185 | |
1186 void RenderLayer::setAbsoluteBoundingBoxForOverlap(const IntRect& rect) | |
esprehn
2014/03/21 23:28:01
Not having parity with the getter is a little weir
ojan
2014/03/22 00:25:43
Whoops. Missed this in a last minute rename.
| |
1187 { | |
1188 m_cachedAbsoluteBoundingBox = rect; | |
1189 clearNeedsToRecomputeBounds(); | |
1190 } | |
1191 | |
1180 void RenderLayer::setCompositingReasons(CompositingReasons reasons) | 1192 void RenderLayer::setCompositingReasons(CompositingReasons reasons) |
1181 { | 1193 { |
1182 if (m_compositingProperties.compositingReasons == reasons) | 1194 if (m_compositingProperties.compositingReasons == reasons) |
1183 return; | 1195 return; |
1184 m_compositingProperties.compositingReasons = reasons; | 1196 m_compositingProperties.compositingReasons = reasons; |
1185 m_clipper.setCompositingClipRectsDirty(); | 1197 m_clipper.setCompositingClipRectsDirty(); |
1186 } | 1198 } |
1187 | 1199 |
1188 bool RenderLayer::hasAncestorWithFilterOutsets() const | 1200 bool RenderLayer::hasAncestorWithFilterOutsets() const |
1189 { | 1201 { |
(...skipping 2171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3361 LayoutPoint delta; | 3373 LayoutPoint delta; |
3362 if (offsetFromRoot) | 3374 if (offsetFromRoot) |
3363 delta = *offsetFromRoot; | 3375 delta = *offsetFromRoot; |
3364 else | 3376 else |
3365 convertToLayerCoords(ancestorLayer, delta); | 3377 convertToLayerCoords(ancestorLayer, delta); |
3366 | 3378 |
3367 result.moveBy(delta); | 3379 result.moveBy(delta); |
3368 return result; | 3380 return result; |
3369 } | 3381 } |
3370 | 3382 |
3371 IntRect RenderLayer::absoluteBoundingBox() const | |
3372 { | |
3373 return pixelSnappedIntRect(boundingBox(root())); | |
3374 } | |
3375 | |
3376 LayoutRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, c onst LayoutPoint* offsetFromRoot, CalculateLayerBoundsFlags flags) const | 3383 LayoutRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, c onst LayoutPoint* offsetFromRoot, CalculateLayerBoundsFlags flags) const |
3377 { | 3384 { |
3378 if (!isSelfPaintingLayer()) | 3385 if (!isSelfPaintingLayer()) |
3379 return LayoutRect(); | 3386 return LayoutRect(); |
3380 | 3387 |
3381 // FIXME: This could be improved to do a check like hasVisibleNonCompositing DescendantLayers() (bug 92580). | 3388 // FIXME: This could be improved to do a check like hasVisibleNonCompositing DescendantLayers() (bug 92580). |
3382 if ((flags & ExcludeHiddenDescendants) && this != ancestorLayer && !hasVisib leContent() && !hasVisibleDescendant()) | 3389 if ((flags & ExcludeHiddenDescendants) && this != ancestorLayer && !hasVisib leContent() && !hasVisibleDescendant()) |
3383 return LayoutRect(); | 3390 return LayoutRect(); |
3384 | 3391 |
3385 RenderLayerModelObject* renderer = this->renderer(); | 3392 RenderLayerModelObject* renderer = this->renderer(); |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3893 DisableCompositingQueryAsserts disabler; | 3900 DisableCompositingQueryAsserts disabler; |
3894 if (paintsWithFilters()) | 3901 if (paintsWithFilters()) |
3895 didPaintWithFilters = true; | 3902 didPaintWithFilters = true; |
3896 updateFilters(oldStyle, renderer()->style()); | 3903 updateFilters(oldStyle, renderer()->style()); |
3897 } | 3904 } |
3898 | 3905 |
3899 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues | 3906 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues |
3900 // https://code.google.com/p/chromium/issues/detail?id=343756 | 3907 // https://code.google.com/p/chromium/issues/detail?id=343756 |
3901 DisableCompositingQueryAsserts disabler; | 3908 DisableCompositingQueryAsserts disabler; |
3902 | 3909 |
3910 // FIXME: We could avoid doing this ancestor walk by keeping a childNeedsToR ecomputeBounds bit | |
3911 // and using that along with needsToRecomputeBounds to set this bit in a lat er layer tree walk | |
3912 // e.g. during assignLayersToBackings or computeCompositingRequirements. | |
3903 if (RenderLayer* compositingLayer = enclosingCompositingLayer()) | 3913 if (RenderLayer* compositingLayer = enclosingCompositingLayer()) |
3904 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate(); | 3914 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate(); |
3915 // FIXME: We only need to set this if something changed that can change our absolute bounding rect. | |
3916 m_needsToRecomputeBounds = true; | |
3905 | 3917 |
3906 const RenderStyle* newStyle = renderer()->style(); | 3918 const RenderStyle* newStyle = renderer()->style(); |
3907 | 3919 |
3908 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks); | 3920 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks); |
3909 // FIXME: this compositing logic should be pushed into the compositing code, not here. | 3921 // FIXME: this compositing logic should be pushed into the compositing code, not here. |
3910 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle) | 3922 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle) |
3911 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) | 3923 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) |
3912 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters) | 3924 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters) |
3913 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) { | 3925 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) { |
3914 compositor()->setCompositingLayersNeedRebuild(); | 3926 compositor()->setCompositingLayersNeedRebuild(); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4068 } | 4080 } |
4069 } | 4081 } |
4070 | 4082 |
4071 void showLayerTree(const WebCore::RenderObject* renderer) | 4083 void showLayerTree(const WebCore::RenderObject* renderer) |
4072 { | 4084 { |
4073 if (!renderer) | 4085 if (!renderer) |
4074 return; | 4086 return; |
4075 showLayerTree(renderer->enclosingLayer()); | 4087 showLayerTree(renderer->enclosingLayer()); |
4076 } | 4088 } |
4077 #endif | 4089 #endif |
OLD | NEW |