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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
210 m_backing->contentChanged(changeType); | 210 m_backing->contentChanged(changeType); |
211 } | 211 } |
212 | 212 |
213 bool RenderLayer::canRender3DTransforms() const | 213 bool RenderLayer::canRender3DTransforms() const |
214 { | 214 { |
215 return compositor()->canRender3DTransforms(); | 215 return compositor()->canRender3DTransforms(); |
216 } | 216 } |
217 | 217 |
218 bool RenderLayer::paintsWithFilters() const | 218 bool RenderLayer::paintsWithFilters() const |
219 { | 219 { |
220 // FIXME: Eventually there will be more factors than isComposited() to decid e whether or not to render the filter | |
221 if (!renderer()->hasFilter()) | 220 if (!renderer()->hasFilter()) |
222 return false; | 221 return false; |
223 | 222 |
224 if (!isComposited()) | 223 if (compositingState() != PaintsIntoOwnBacking) |
225 return true; | 224 return true; |
226 | 225 |
227 if (!m_backing || !m_backing->canCompositeFilters()) | 226 if (!m_backing || !m_backing->canCompositeFilters()) |
228 return true; | 227 return true; |
229 | 228 |
230 return false; | 229 return false; |
231 } | 230 } |
232 | 231 |
233 bool RenderLayer::requiresFullLayerImageForFilters() const | 232 bool RenderLayer::requiresFullLayerImageForFilters() const |
234 { | 233 { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
301 } | 300 } |
302 | 301 |
303 repainter().repaintAfterLayout(geometryMap, flags & CheckForRepaint); | 302 repainter().repaintAfterLayout(geometryMap, flags & CheckForRepaint); |
304 | 303 |
305 // Go ahead and update the reflection's position and size. | 304 // Go ahead and update the reflection's position and size. |
306 if (m_reflection) | 305 if (m_reflection) |
307 m_reflection->layout(); | 306 m_reflection->layout(); |
308 | 307 |
309 // Clear the IsCompositingUpdateRoot flag once we've found the first composi ting layer in this update. | 308 // Clear the IsCompositingUpdateRoot flag once we've found the first composi ting layer in this update. |
310 bool isUpdateRoot = (flags & IsCompositingUpdateRoot); | 309 bool isUpdateRoot = (flags & IsCompositingUpdateRoot); |
311 if (isComposited()) | 310 if (backing()) |
312 flags &= ~IsCompositingUpdateRoot; | 311 flags &= ~IsCompositingUpdateRoot; |
313 | 312 |
314 if (useRegionBasedColumns() && renderer()->isInFlowRenderFlowThread()) { | 313 if (useRegionBasedColumns() && renderer()->isInFlowRenderFlowThread()) { |
315 updatePagination(); | 314 updatePagination(); |
316 flags |= UpdatePagination; | 315 flags |= UpdatePagination; |
317 } | 316 } |
318 | 317 |
319 if (renderer()->hasColumns()) | 318 if (renderer()->hasColumns()) |
320 flags |= UpdatePagination; | 319 flags |= UpdatePagination; |
321 | 320 |
322 for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) | 321 for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) |
323 child->updateLayerPositions(geometryMap, flags); | 322 child->updateLayerPositions(geometryMap, flags); |
324 | 323 |
325 if ((flags & UpdateCompositingLayers) && isComposited()) { | 324 if ((flags & UpdateCompositingLayers) && backing()) { |
326 RenderLayerBacking::UpdateAfterLayoutFlags updateFlags = RenderLayerBack ing::CompositingChildrenOnly; | 325 RenderLayerBacking::UpdateAfterLayoutFlags updateFlags = RenderLayerBack ing::CompositingChildrenOnly; |
327 if (flags & NeedsFullRepaintInBacking) | 326 if (flags & NeedsFullRepaintInBacking) |
328 updateFlags |= RenderLayerBacking::NeedsFullRepaint; | 327 updateFlags |= RenderLayerBacking::NeedsFullRepaint; |
329 if (isUpdateRoot) | 328 if (isUpdateRoot) |
330 updateFlags |= RenderLayerBacking::IsUpdateRoot; | 329 updateFlags |= RenderLayerBacking::IsUpdateRoot; |
331 backing()->updateAfterLayout(updateFlags); | 330 backing()->updateAfterLayout(updateFlags); |
332 } | 331 } |
333 | 332 |
334 if (geometryMap) | 333 if (geometryMap) |
335 geometryMap->popMappingsToAncestor(parent()); | 334 geometryMap->popMappingsToAncestor(parent()); |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
828 { | 827 { |
829 const Settings* settings = renderer()->document().settings(); | 828 const Settings* settings = renderer()->document().settings(); |
830 return settings && settings->regionBasedColumnsEnabled(); | 829 return settings && settings->regionBasedColumnsEnabled(); |
831 } | 830 } |
832 | 831 |
833 void RenderLayer::updatePagination() | 832 void RenderLayer::updatePagination() |
834 { | 833 { |
835 m_isPaginated = false; | 834 m_isPaginated = false; |
836 m_enclosingPaginationLayer = 0; | 835 m_enclosingPaginationLayer = 0; |
837 | 836 |
838 if (isComposited() || !parent()) | 837 if (backing() || !parent()) |
839 return; // FIXME: We will have to deal with paginated compositing layers someday. | 838 return; // FIXME: We will have to deal with paginated compositing layers someday. |
840 // FIXME: For now the RenderView can't be paginated. Eventually printing will move to a model where it is though. | 839 // FIXME: For now the RenderView can't be paginated. Eventually printing will move to a model where it is though. |
841 | 840 |
842 // The main difference between the paginated booleans for the old column cod e and the new column code | 841 // The main difference between the paginated booleans for the old column cod e and the new column code |
843 // is that each paginated layer has to paint on its own with the new code. T here is no | 842 // is that each paginated layer has to paint on its own with the new code. T here is no |
844 // recurring into child layers. This means that the m_isPaginated bits for t he new column code can't just be set on | 843 // recurring into child layers. This means that the m_isPaginated bits for t he new column code can't just be set on |
845 // "roots" that get split and paint all their descendants. Instead each laye r has to be checked individually and | 844 // "roots" that get split and paint all their descendants. Instead each laye r has to be checked individually and |
846 // genuinely know if it is going to have to split itself up when painting on ly its contents (and not any other descendant | 845 // genuinely know if it is going to have to split itself up when painting on ly its contents (and not any other descendant |
847 // layers). We track an enclosingPaginationLayer instead of using a simple b it, since we want to be able to get back | 846 // layers). We track an enclosingPaginationLayer instead of using a simple b it, since we want to be able to get back |
848 // to that layer easily. | 847 // to that layer easily. |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1138 if (positionedParent->renderer()->hasOverflowClip()) { | 1137 if (positionedParent->renderer()->hasOverflowClip()) { |
1139 LayoutSize offset = positionedParent->scrolledContentOffset(); | 1138 LayoutSize offset = positionedParent->scrolledContentOffset(); |
1140 localPoint -= offset; | 1139 localPoint -= offset; |
1141 } | 1140 } |
1142 | 1141 |
1143 if (renderer()->isOutOfFlowPositioned() && positionedParent->renderer()- >isInFlowPositioned() && positionedParent->renderer()->isRenderInline()) { | 1142 if (renderer()->isOutOfFlowPositioned() && positionedParent->renderer()- >isInFlowPositioned() && positionedParent->renderer()->isRenderInline()) { |
1144 LayoutSize offset = toRenderInline(positionedParent->renderer())->of fsetForInFlowPositionedInline(toRenderBox(renderer())); | 1143 LayoutSize offset = toRenderInline(positionedParent->renderer())->of fsetForInFlowPositionedInline(toRenderBox(renderer())); |
1145 localPoint += offset; | 1144 localPoint += offset; |
1146 } | 1145 } |
1147 } else if (parent()) { | 1146 } else if (parent()) { |
1148 if (isComposited()) { | 1147 if (backing()) { |
1149 // FIXME: Composited layers ignore pagination, so about the best we can do is make sure they're offset into the appropriate column. | 1148 // FIXME: Composited layers ignore pagination, so about the best we can do is make sure they're offset into the appropriate column. |
1150 // They won't split across columns properly. | 1149 // They won't split across columns properly. |
1151 LayoutSize columnOffset; | 1150 LayoutSize columnOffset; |
1152 if (!parent()->renderer()->hasColumns() && parent()->renderer()->isR oot() && renderer()->view()->hasColumns()) | 1151 if (!parent()->renderer()->hasColumns() && parent()->renderer()->isR oot() && renderer()->view()->hasColumns()) |
1153 renderer()->view()->adjustForColumns(columnOffset, localPoint); | 1152 renderer()->view()->adjustForColumns(columnOffset, localPoint); |
1154 else | 1153 else |
1155 parent()->renderer()->adjustForColumns(columnOffset, localPoint) ; | 1154 parent()->renderer()->adjustForColumns(columnOffset, localPoint) ; |
1156 | 1155 |
1157 localPoint += columnOffset; | 1156 localPoint += columnOffset; |
1158 } | 1157 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1270 curr = curr->parent(); | 1269 curr = curr->parent(); |
1271 | 1270 |
1272 return curr; | 1271 return curr; |
1273 } | 1272 } |
1274 | 1273 |
1275 static inline const RenderLayer* compositingContainer(const RenderLayer* layer) | 1274 static inline const RenderLayer* compositingContainer(const RenderLayer* layer) |
1276 { | 1275 { |
1277 return layer->isNormalFlowOnly() ? layer->parent() : layer->ancestorStacking Container(); | 1276 return layer->isNormalFlowOnly() ? layer->parent() : layer->ancestorStacking Container(); |
1278 } | 1277 } |
1279 | 1278 |
1279 // FIXME: having two different functions named enclosingCompositingLayer and enc losingCompositingLayerForRepaint | |
1280 // is error-prone and misleading for reading code that uses these functio ns - especially compounded with | |
1281 // the includeSelf option. | |
Julien - ping for review
2013/10/03 20:08:36
Nit: We usually don't align FIXMEs in Blink.
shawnsingh
2013/10/07 11:45:04
Done
| |
1280 RenderLayer* RenderLayer::enclosingCompositingLayer(bool includeSelf) const | 1282 RenderLayer* RenderLayer::enclosingCompositingLayer(bool includeSelf) const |
1281 { | 1283 { |
1282 if (includeSelf && isComposited()) | 1284 if (includeSelf && backing()) |
1283 return const_cast<RenderLayer*>(this); | 1285 return const_cast<RenderLayer*>(this); |
1284 | 1286 |
1285 for (const RenderLayer* curr = compositingContainer(this); curr; curr = comp ositingContainer(curr)) { | 1287 for (const RenderLayer* curr = compositingContainer(this); curr; curr = comp ositingContainer(curr)) { |
1286 if (curr->isComposited()) | 1288 if (curr->backing()) |
1287 return const_cast<RenderLayer*>(curr); | 1289 return const_cast<RenderLayer*>(curr); |
1288 } | 1290 } |
1289 | 1291 |
1290 return 0; | 1292 return 0; |
1291 } | 1293 } |
1292 | 1294 |
1293 RenderLayer* RenderLayer::enclosingCompositingLayerForRepaint(bool includeSelf) const | 1295 RenderLayer* RenderLayer::enclosingCompositingLayerForRepaint(bool includeSelf) const |
1294 { | 1296 { |
1295 if (includeSelf && isComposited() && !backing()->paintsIntoCompositedAncesto r()) | 1297 if (includeSelf && compositingState() == PaintsIntoOwnBacking) |
1296 return const_cast<RenderLayer*>(this); | 1298 return const_cast<RenderLayer*>(this); |
1297 | 1299 |
1298 for (const RenderLayer* curr = compositingContainer(this); curr; curr = comp ositingContainer(curr)) { | 1300 for (const RenderLayer* curr = compositingContainer(this); curr; curr = comp ositingContainer(curr)) { |
1299 if (curr->isComposited() && !curr->backing()->paintsIntoCompositedAncest or()) | 1301 if (curr->compositingState() == PaintsIntoOwnBacking) |
1300 return const_cast<RenderLayer*>(curr); | 1302 return const_cast<RenderLayer*>(curr); |
1301 } | 1303 } |
1302 | 1304 |
1303 return 0; | 1305 return 0; |
1304 } | 1306 } |
1305 | 1307 |
1306 RenderLayer* RenderLayer::ancestorScrollingLayer() const | 1308 RenderLayer* RenderLayer::ancestorScrollingLayer() const |
1307 { | 1309 { |
1308 if (!acceleratedCompositingForOverflowScrollEnabled()) | 1310 if (!acceleratedCompositingForOverflowScrollEnabled()) |
1309 return 0; | 1311 return 0; |
(...skipping 17 matching lines...) Expand all Loading... | |
1327 if (curr->requiresFullLayerImageForFilters()) | 1329 if (curr->requiresFullLayerImageForFilters()) |
1328 return const_cast<RenderLayer*>(curr); | 1330 return const_cast<RenderLayer*>(curr); |
1329 } | 1331 } |
1330 | 1332 |
1331 return 0; | 1333 return 0; |
1332 } | 1334 } |
1333 | 1335 |
1334 RenderLayer* RenderLayer::enclosingFilterRepaintLayer() const | 1336 RenderLayer* RenderLayer::enclosingFilterRepaintLayer() const |
1335 { | 1337 { |
1336 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { | 1338 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { |
1337 if ((curr != this && curr->requiresFullLayerImageForFilters()) || curr-> isComposited() || curr->isRootLayer()) | 1339 if ((curr != this && curr->requiresFullLayerImageForFilters()) || curr-> compositingState() == PaintsIntoOwnBacking || curr->isRootLayer()) |
1338 return const_cast<RenderLayer*>(curr); | 1340 return const_cast<RenderLayer*>(curr); |
1339 } | 1341 } |
1340 return 0; | 1342 return 0; |
1341 } | 1343 } |
1342 | 1344 |
1343 void RenderLayer::setFilterBackendNeedsRepaintingInRect(const LayoutRect& rect) | 1345 void RenderLayer::setFilterBackendNeedsRepaintingInRect(const LayoutRect& rect) |
1344 { | 1346 { |
1345 if (rect.isEmpty()) | 1347 if (rect.isEmpty()) |
1346 return; | 1348 return; |
1347 | 1349 |
(...skipping 10 matching lines...) Expand all Loading... | |
1358 // shader can address any ouput pixel. | 1360 // shader can address any ouput pixel. |
1359 // Note: This is only for output rect, so there's no need to expand the dirty source rect. | 1361 // Note: This is only for output rect, so there's no need to expand the dirty source rect. |
1360 rectForRepaint.unite(calculateLayerBounds(this)); | 1362 rectForRepaint.unite(calculateLayerBounds(this)); |
1361 } | 1363 } |
1362 | 1364 |
1363 RenderLayer* parentLayer = enclosingFilterRepaintLayer(); | 1365 RenderLayer* parentLayer = enclosingFilterRepaintLayer(); |
1364 ASSERT(parentLayer); | 1366 ASSERT(parentLayer); |
1365 FloatQuad repaintQuad(rectForRepaint); | 1367 FloatQuad repaintQuad(rectForRepaint); |
1366 LayoutRect parentLayerRect = renderer()->localToContainerQuad(repaintQuad, p arentLayer->renderer()).enclosingBoundingBox(); | 1368 LayoutRect parentLayerRect = renderer()->localToContainerQuad(repaintQuad, p arentLayer->renderer()).enclosingBoundingBox(); |
1367 | 1369 |
1368 if (parentLayer->isComposited()) { | 1370 if (parentLayer->backing()) { |
1369 parentLayer->setBackingNeedsRepaintInRect(parentLayerRect); | 1371 parentLayer->setBackingNeedsRepaintInRect(parentLayerRect); |
1370 return; | 1372 return; |
1371 } | 1373 } |
1372 | 1374 |
1373 if (parentLayer->paintsWithFilters()) { | 1375 if (parentLayer->paintsWithFilters()) { |
1374 parentLayer->setFilterBackendNeedsRepaintingInRect(parentLayerRect); | 1376 parentLayer->setFilterBackendNeedsRepaintingInRect(parentLayerRect); |
1375 return; | 1377 return; |
1376 } | 1378 } |
1377 | 1379 |
1378 if (parentLayer->isRootLayer()) { | 1380 if (parentLayer->isRootLayer()) { |
(...skipping 10 matching lines...) Expand all Loading... | |
1389 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { | 1391 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { |
1390 RenderLayerModelObject* renderer = curr->renderer(); | 1392 RenderLayerModelObject* renderer = curr->renderer(); |
1391 if (renderer->style()->hasFilterOutsets()) | 1393 if (renderer->style()->hasFilterOutsets()) |
1392 return true; | 1394 return true; |
1393 } | 1395 } |
1394 return false; | 1396 return false; |
1395 } | 1397 } |
1396 | 1398 |
1397 RenderLayer* RenderLayer::clippingRootForPainting() const | 1399 RenderLayer* RenderLayer::clippingRootForPainting() const |
1398 { | 1400 { |
1399 if (isComposited()) | 1401 if (backing()) |
1400 return const_cast<RenderLayer*>(this); | 1402 return const_cast<RenderLayer*>(this); |
1401 | 1403 |
1402 const RenderLayer* current = this; | 1404 const RenderLayer* current = this; |
1403 while (current) { | 1405 while (current) { |
1404 if (current->isRootLayer()) | 1406 if (current->isRootLayer()) |
1405 return const_cast<RenderLayer*>(current); | 1407 return const_cast<RenderLayer*>(current); |
1406 | 1408 |
1407 current = compositingContainer(current); | 1409 current = compositingContainer(current); |
1408 ASSERT(current); | 1410 ASSERT(current); |
1409 if (current->transform() | 1411 if (current->transform() |
1410 || (current->isComposited() && !current->backing()->paintsIntoCompos itedAncestor()) | 1412 || (current->backing() && !current->backing()->paintsIntoCompositedA ncestor()) |
1411 ) | 1413 ) |
1412 return const_cast<RenderLayer*>(current); | 1414 return const_cast<RenderLayer*>(current); |
1413 } | 1415 } |
1414 | 1416 |
1415 ASSERT_NOT_REACHED(); | 1417 ASSERT_NOT_REACHED(); |
1416 return 0; | 1418 return 0; |
1417 } | 1419 } |
1418 | 1420 |
1419 LayoutPoint RenderLayer::absoluteToContents(const LayoutPoint& absolutePoint) co nst | 1421 LayoutPoint RenderLayer::absoluteToContents(const LayoutPoint& absolutePoint) co nst |
1420 { | 1422 { |
(...skipping 14 matching lines...) Expand all Loading... | |
1435 { | 1437 { |
1436 // FIXME: This seems incorrect; why would SVG layers be opaque? | 1438 // FIXME: This seems incorrect; why would SVG layers be opaque? |
1437 if (renderer()->node() && renderer()->node()->namespaceURI() == SVGNames::sv gNamespaceURI) | 1439 if (renderer()->node() && renderer()->node()->namespaceURI() == SVGNames::sv gNamespaceURI) |
1438 return false; | 1440 return false; |
1439 | 1441 |
1440 return renderer()->isTransparent() || renderer()->hasMask(); | 1442 return renderer()->isTransparent() || renderer()->hasMask(); |
1441 } | 1443 } |
1442 | 1444 |
1443 RenderLayer* RenderLayer::transparentPaintingAncestor() | 1445 RenderLayer* RenderLayer::transparentPaintingAncestor() |
1444 { | 1446 { |
1445 if (isComposited()) | 1447 if (backing()) |
Julien - ping for review
2013/10/03 20:08:36
This gets called from RenderLayer::beginTransparen
shawnsingh
2013/10/07 11:45:04
This is a confusing one, and for the sake of movin
| |
1446 return 0; | 1448 return 0; |
1447 | 1449 |
1448 for (RenderLayer* curr = parent(); curr; curr = curr->parent()) { | 1450 for (RenderLayer* curr = parent(); curr; curr = curr->parent()) { |
1449 if (curr->isComposited()) | 1451 if (curr->backing()) |
1450 return 0; | 1452 return 0; |
1451 if (curr->isTransparent()) | 1453 if (curr->isTransparent()) |
1452 return curr; | 1454 return curr; |
1453 } | 1455 } |
1454 return 0; | 1456 return 0; |
1455 } | 1457 } |
1456 | 1458 |
1457 enum TransparencyClipBoxBehavior { | 1459 enum TransparencyClipBoxBehavior { |
1458 PaintingTransparencyClipBox, | 1460 PaintingTransparencyClipBox, |
1459 HitTestingTransparencyClipBox | 1461 HitTestingTransparencyClipBox |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1878 } | 1880 } |
1879 | 1881 |
1880 bool RenderLayer::usesCompositedScrolling() const | 1882 bool RenderLayer::usesCompositedScrolling() const |
1881 { | 1883 { |
1882 RenderBox* box = renderBox(); | 1884 RenderBox* box = renderBox(); |
1883 | 1885 |
1884 // Scroll form controls on the main thread so they exhibit correct touch scr oll event bubbling | 1886 // Scroll form controls on the main thread so they exhibit correct touch scr oll event bubbling |
1885 if (box && (box->isIntristicallyScrollable(VerticalScrollbar) || box->isIntr isticallyScrollable(HorizontalScrollbar))) | 1887 if (box && (box->isIntristicallyScrollable(VerticalScrollbar) || box->isIntr isticallyScrollable(HorizontalScrollbar))) |
1886 return false; | 1888 return false; |
1887 | 1889 |
1888 return isComposited() && backing()->scrollingLayer(); | 1890 return backing() && backing()->scrollingLayer(); |
1889 } | 1891 } |
1890 | 1892 |
1891 bool RenderLayer::needsCompositedScrolling() const | 1893 bool RenderLayer::needsCompositedScrolling() const |
1892 { | 1894 { |
1893 if (!compositorDrivenAcceleratedScrollingEnabled()) | 1895 if (!compositorDrivenAcceleratedScrollingEnabled()) |
1894 return needsToBeStackingContainer(); | 1896 return needsToBeStackingContainer(); |
1895 if (FrameView* frameView = renderer()->view()->frameView()) | 1897 if (FrameView* frameView = renderer()->view()->frameView()) |
1896 return frameView->containsScrollableArea(scrollableArea()); | 1898 return frameView->containsScrollableArea(scrollableArea()); |
1897 return false; | 1899 return false; |
1898 } | 1900 } |
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2507 return false; | 2509 return false; |
2508 } | 2510 } |
2509 | 2511 |
2510 static bool paintForFixedRootBackground(const RenderLayer* layer, RenderLayer::P aintLayerFlags paintFlags) | 2512 static bool paintForFixedRootBackground(const RenderLayer* layer, RenderLayer::P aintLayerFlags paintFlags) |
2511 { | 2513 { |
2512 return layer->renderer()->isRoot() && (paintFlags & RenderLayer::PaintLayerP aintingRootBackgroundOnly); | 2514 return layer->renderer()->isRoot() && (paintFlags & RenderLayer::PaintLayerP aintingRootBackgroundOnly); |
2513 } | 2515 } |
2514 | 2516 |
2515 void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags) | 2517 void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags) |
2516 { | 2518 { |
2517 if (isComposited()) { | 2519 if (backing()) { |
2518 // The updatingControlTints() painting pass goes through compositing lay ers, | 2520 // The updatingControlTints() painting pass goes through compositing lay ers, |
2519 // but we need to ensure that we don't cache clip rects computed with th e wrong root in this case. | 2521 // but we need to ensure that we don't cache clip rects computed with th e wrong root in this case. |
2520 if (context->updatingControlTints() || (paintingInfo.paintBehavior & Pai ntBehaviorFlattenCompositingLayers)) { | 2522 if (context->updatingControlTints() || (paintingInfo.paintBehavior & Pai ntBehaviorFlattenCompositingLayers)) { |
2521 paintFlags |= PaintLayerTemporaryClipRects; | 2523 paintFlags |= PaintLayerTemporaryClipRects; |
2522 } else if (!backing()->paintsIntoCompositedAncestor() | 2524 } else if (!backing()->paintsIntoCompositedAncestor() |
2523 && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingRefle ction) | 2525 && !shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingRefle ction) |
2524 && !paintForFixedRootBackground(this, paintFlags)) { | 2526 && !paintForFixedRootBackground(this, paintFlags)) { |
2525 // If this RenderLayer should paint into its backing, that will be d one via RenderLayerBacking::paintIntoLayer(). | 2527 // If this RenderLayer should paint into its backing, that will be d one via RenderLayerBacking::paintIntoLayer(). |
2526 return; | 2528 return; |
2527 } | 2529 } |
(...skipping 1777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4305 return pixelSnappedIntRect(localClipRect); | 4307 return pixelSnappedIntRect(localClipRect); |
4306 } | 4308 } |
4307 } | 4309 } |
4308 | 4310 |
4309 // FIXME: should probably just pass 'flags' down to descendants. | 4311 // FIXME: should probably just pass 'flags' down to descendants. |
4310 CalculateLayerBoundsFlags descendantFlags = DefaultCalculateLayerBoundsFlags | (flags & ExcludeHiddenDescendants) | (flags & IncludeCompositedDescendants); | 4312 CalculateLayerBoundsFlags descendantFlags = DefaultCalculateLayerBoundsFlags | (flags & ExcludeHiddenDescendants) | (flags & IncludeCompositedDescendants); |
4311 | 4313 |
4312 const_cast<RenderLayer*>(this)->updateLayerListsIfNeeded(); | 4314 const_cast<RenderLayer*>(this)->updateLayerListsIfNeeded(); |
4313 | 4315 |
4314 if (RenderLayer* reflection = reflectionLayer()) { | 4316 if (RenderLayer* reflection = reflectionLayer()) { |
4315 if (!reflection->isComposited()) { | 4317 if (!reflection->backing()) { |
4316 IntRect childUnionBounds = reflection->calculateLayerBounds(this, 0, descendantFlags); | 4318 IntRect childUnionBounds = reflection->calculateLayerBounds(this, 0, descendantFlags); |
4317 unionBounds.unite(childUnionBounds); | 4319 unionBounds.unite(childUnionBounds); |
4318 } | 4320 } |
4319 } | 4321 } |
4320 | 4322 |
4321 ASSERT(isStackingContainer() || (!posZOrderList() || !posZOrderList()->size( ))); | 4323 ASSERT(isStackingContainer() || (!posZOrderList() || !posZOrderList()->size( ))); |
4322 | 4324 |
4323 #if !ASSERT_DISABLED | 4325 #if !ASSERT_DISABLED |
4324 LayerListMutationDetector mutationChecker(const_cast<RenderLayer*>(this)); | 4326 LayerListMutationDetector mutationChecker(const_cast<RenderLayer*>(this)); |
4325 #endif | 4327 #endif |
4326 | 4328 |
4327 if (Vector<RenderLayer*>* negZOrderList = this->negZOrderList()) { | 4329 if (Vector<RenderLayer*>* negZOrderList = this->negZOrderList()) { |
4328 size_t listSize = negZOrderList->size(); | 4330 size_t listSize = negZOrderList->size(); |
4329 for (size_t i = 0; i < listSize; ++i) { | 4331 for (size_t i = 0; i < listSize; ++i) { |
4330 RenderLayer* curLayer = negZOrderList->at(i); | 4332 RenderLayer* curLayer = negZOrderList->at(i); |
4331 if (flags & IncludeCompositedDescendants || !curLayer->isComposited( )) { | 4333 if (flags & IncludeCompositedDescendants || !curLayer->backing()) { |
4332 IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags); | 4334 IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags); |
4333 unionBounds.unite(childUnionBounds); | 4335 unionBounds.unite(childUnionBounds); |
4334 } | 4336 } |
4335 } | 4337 } |
4336 } | 4338 } |
4337 | 4339 |
4338 if (Vector<RenderLayer*>* posZOrderList = this->posZOrderList()) { | 4340 if (Vector<RenderLayer*>* posZOrderList = this->posZOrderList()) { |
4339 size_t listSize = posZOrderList->size(); | 4341 size_t listSize = posZOrderList->size(); |
4340 for (size_t i = 0; i < listSize; ++i) { | 4342 for (size_t i = 0; i < listSize; ++i) { |
4341 RenderLayer* curLayer = posZOrderList->at(i); | 4343 RenderLayer* curLayer = posZOrderList->at(i); |
4342 if (flags & IncludeCompositedDescendants || !curLayer->isComposited( )) { | 4344 if (flags & IncludeCompositedDescendants || !curLayer->backing()) { |
4343 IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags); | 4345 IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags); |
4344 unionBounds.unite(childUnionBounds); | 4346 unionBounds.unite(childUnionBounds); |
4345 } | 4347 } |
4346 } | 4348 } |
4347 } | 4349 } |
4348 | 4350 |
4349 if (Vector<RenderLayer*>* normalFlowList = this->normalFlowList()) { | 4351 if (Vector<RenderLayer*>* normalFlowList = this->normalFlowList()) { |
4350 size_t listSize = normalFlowList->size(); | 4352 size_t listSize = normalFlowList->size(); |
4351 for (size_t i = 0; i < listSize; ++i) { | 4353 for (size_t i = 0; i < listSize; ++i) { |
4352 RenderLayer* curLayer = normalFlowList->at(i); | 4354 RenderLayer* curLayer = normalFlowList->at(i); |
4353 if (flags & IncludeCompositedDescendants || !curLayer->isComposited( )) { | 4355 if (flags & IncludeCompositedDescendants || !curLayer->backing()) { |
4354 IntRect curAbsBounds = curLayer->calculateLayerBounds(this, 0, d escendantFlags); | 4356 IntRect curAbsBounds = curLayer->calculateLayerBounds(this, 0, d escendantFlags); |
4355 unionBounds.unite(curAbsBounds); | 4357 unionBounds.unite(curAbsBounds); |
4356 } | 4358 } |
4357 } | 4359 } |
4358 } | 4360 } |
4359 | 4361 |
4360 // FIXME: We can optimize the size of the composited layers, by not enlargin g | 4362 // FIXME: We can optimize the size of the composited layers, by not enlargin g |
4361 // filtered areas with the outsets if we know that the filter is going to re nder in hardware. | 4363 // filtered areas with the outsets if we know that the filter is going to re nder in hardware. |
4362 // https://bugs.webkit.org/show_bug.cgi?id=81239 | 4364 // https://bugs.webkit.org/show_bug.cgi?id=81239 |
4363 if (flags & IncludeLayerFilterOutsets) | 4365 if (flags & IncludeLayerFilterOutsets) |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4396 if (typeToClear == AllClipRectTypes) | 4398 if (typeToClear == AllClipRectTypes) |
4397 m_clipRectsCache = nullptr; | 4399 m_clipRectsCache = nullptr; |
4398 else { | 4400 else { |
4399 ASSERT(typeToClear < NumCachedClipRectsTypes); | 4401 ASSERT(typeToClear < NumCachedClipRectsTypes); |
4400 RefPtr<ClipRects> dummy; | 4402 RefPtr<ClipRects> dummy; |
4401 m_clipRectsCache->setClipRects(typeToClear, RespectOverflowClip, dummy); | 4403 m_clipRectsCache->setClipRects(typeToClear, RespectOverflowClip, dummy); |
4402 m_clipRectsCache->setClipRects(typeToClear, IgnoreOverflowClip, dummy); | 4404 m_clipRectsCache->setClipRects(typeToClear, IgnoreOverflowClip, dummy); |
4403 } | 4405 } |
4404 } | 4406 } |
4405 | 4407 |
4408 CompositingState RenderLayer::compositingState() const | |
4409 { | |
4410 // This is computed procedurally so there is no redundant state variable tha t | |
4411 // can get out of sync from the real actual compositing state. | |
4412 | |
4413 if (!m_backing) | |
4414 return NotComposited; | |
4415 | |
4416 if (m_backing && backing()->paintsIntoCompositedAncestor()) | |
4417 return HasOwnBackingButPaintsIntoAncestor; | |
4418 | |
4419 ASSERT(m_backing); | |
4420 return PaintsIntoOwnBacking; | |
4421 } | |
Julien - ping for review
2013/10/03 20:08:36
The PaintsIntoGroupBacking state is never reached
shawnsingh
2013/10/07 11:45:04
OK, removed for now.
| |
4422 | |
4406 RenderLayerBacking* RenderLayer::ensureBacking() | 4423 RenderLayerBacking* RenderLayer::ensureBacking() |
4407 { | 4424 { |
4408 if (!m_backing) { | 4425 if (!m_backing) { |
4409 m_backing = adoptPtr(new RenderLayerBacking(this)); | 4426 m_backing = adoptPtr(new RenderLayerBacking(this)); |
4410 compositor()->layerBecameComposited(this); | 4427 compositor()->layerBecameComposited(this); |
4411 | 4428 |
4412 updateOrRemoveFilterEffectRenderer(); | 4429 updateOrRemoveFilterEffectRenderer(); |
4413 | 4430 |
4414 if (RuntimeEnabledFeatures::cssCompositingEnabled()) | 4431 if (RuntimeEnabledFeatures::cssCompositingEnabled()) |
4415 backing()->setBlendMode(m_blendMode); | 4432 backing()->setBlendMode(m_blendMode); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4457 return m_backing ? m_backing->layerForVerticalScrollbar() : 0; | 4474 return m_backing ? m_backing->layerForVerticalScrollbar() : 0; |
4458 } | 4475 } |
4459 | 4476 |
4460 GraphicsLayer* RenderLayer::layerForScrollCorner() const | 4477 GraphicsLayer* RenderLayer::layerForScrollCorner() const |
4461 { | 4478 { |
4462 return m_backing ? m_backing->layerForScrollCorner() : 0; | 4479 return m_backing ? m_backing->layerForScrollCorner() : 0; |
4463 } | 4480 } |
4464 | 4481 |
4465 bool RenderLayer::paintsWithTransform(PaintBehavior paintBehavior) const | 4482 bool RenderLayer::paintsWithTransform(PaintBehavior paintBehavior) const |
4466 { | 4483 { |
4467 return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayer s) || !isComposited()); | 4484 return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayer s) || compositingState() != PaintsIntoOwnBacking); |
4468 } | 4485 } |
4469 | 4486 |
4470 bool RenderLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const | 4487 bool RenderLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const |
4471 { | 4488 { |
4472 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant()) | 4489 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant()) |
4473 return false; | 4490 return false; |
4474 | 4491 |
4475 if (paintsWithTransparency(PaintBehaviorNormal)) | 4492 if (paintsWithTransparency(PaintBehaviorNormal)) |
4476 return false; | 4493 return false; |
4477 | 4494 |
(...skipping 30 matching lines...) Expand all Loading... | |
4508 || listBackgroundIsKnownToBeOpaqueInRect(normalFlowList(), localRect); | 4525 || listBackgroundIsKnownToBeOpaqueInRect(normalFlowList(), localRect); |
4509 } | 4526 } |
4510 | 4527 |
4511 bool RenderLayer::listBackgroundIsKnownToBeOpaqueInRect(const Vector<RenderLayer *>* list, const LayoutRect& localRect) const | 4528 bool RenderLayer::listBackgroundIsKnownToBeOpaqueInRect(const Vector<RenderLayer *>* list, const LayoutRect& localRect) const |
4512 { | 4529 { |
4513 if (!list || list->isEmpty()) | 4530 if (!list || list->isEmpty()) |
4514 return false; | 4531 return false; |
4515 | 4532 |
4516 for (Vector<RenderLayer*>::const_reverse_iterator iter = list->rbegin(); ite r != list->rend(); ++iter) { | 4533 for (Vector<RenderLayer*>::const_reverse_iterator iter = list->rbegin(); ite r != list->rend(); ++iter) { |
4517 const RenderLayer* childLayer = *iter; | 4534 const RenderLayer* childLayer = *iter; |
4518 if (childLayer->isComposited()) | 4535 if (childLayer->backing()) |
4519 continue; | 4536 continue; |
4520 | 4537 |
4521 if (!childLayer->canUseConvertToLayerCoords()) | 4538 if (!childLayer->canUseConvertToLayerCoords()) |
4522 continue; | 4539 continue; |
4523 | 4540 |
4524 LayoutPoint childOffset; | 4541 LayoutPoint childOffset; |
4525 LayoutRect childLocalRect(localRect); | 4542 LayoutRect childLocalRect(localRect); |
4526 childLayer->convertToLayerCoords(this, childOffset); | 4543 childLayer->convertToLayerCoords(this, childOffset); |
4527 childLocalRect.moveBy(-childOffset); | 4544 childLocalRect.moveBy(-childOffset); |
4528 | 4545 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4765 | 4782 |
4766 void RenderLayer::repaintIncludingDescendants() | 4783 void RenderLayer::repaintIncludingDescendants() |
4767 { | 4784 { |
4768 renderer()->repaint(); | 4785 renderer()->repaint(); |
4769 for (RenderLayer* curr = firstChild(); curr; curr = curr->nextSibling()) | 4786 for (RenderLayer* curr = firstChild(); curr; curr = curr->nextSibling()) |
4770 curr->repaintIncludingDescendants(); | 4787 curr->repaintIncludingDescendants(); |
4771 } | 4788 } |
4772 | 4789 |
4773 void RenderLayer::setBackingNeedsRepaint() | 4790 void RenderLayer::setBackingNeedsRepaint() |
4774 { | 4791 { |
4775 ASSERT(isComposited()); | 4792 ASSERT(backing()); |
4776 backing()->setContentsNeedDisplay(); | 4793 backing()->setContentsNeedDisplay(); |
4777 } | 4794 } |
4778 | 4795 |
4779 void RenderLayer::setBackingNeedsRepaintInRect(const LayoutRect& r) | 4796 void RenderLayer::setBackingNeedsRepaintInRect(const LayoutRect& r) |
4780 { | 4797 { |
4781 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, | 4798 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, |
4782 // so assert but check that the layer is composited. | 4799 // so assert but check that the layer is composited. |
4783 ASSERT(isComposited()); | 4800 ASSERT(backing()); |
4784 if (!isComposited()) { | 4801 if (!backing()) { |
4785 // If we're trying to repaint the placeholder document layer, propagate the | 4802 // If we're trying to repaint the placeholder document layer, propagate the |
4786 // repaint to the native view system. | 4803 // repaint to the native view system. |
4787 LayoutRect absRect(r); | 4804 LayoutRect absRect(r); |
4788 LayoutPoint delta; | 4805 LayoutPoint delta; |
4789 convertToLayerCoords(root(), delta); | 4806 convertToLayerCoords(root(), delta); |
4790 absRect.moveBy(delta); | 4807 absRect.moveBy(delta); |
4791 | 4808 |
4792 RenderView* view = renderer()->view(); | 4809 RenderView* view = renderer()->view(); |
4793 if (view) | 4810 if (view) |
4794 view->repaintViewRectangle(absRect); | 4811 view->repaintViewRectangle(absRect); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4990 | 5007 |
4991 inline bool RenderLayer::needsCompositingLayersRebuiltForClip(const RenderStyle* oldStyle, const RenderStyle* newStyle) const | 5008 inline bool RenderLayer::needsCompositingLayersRebuiltForClip(const RenderStyle* oldStyle, const RenderStyle* newStyle) const |
4992 { | 5009 { |
4993 ASSERT(newStyle); | 5010 ASSERT(newStyle); |
4994 return oldStyle && (oldStyle->clip() != newStyle->clip() || oldStyle->hasCli p() != newStyle->hasClip()); | 5011 return oldStyle && (oldStyle->clip() != newStyle->clip() || oldStyle->hasCli p() != newStyle->hasClip()); |
4995 } | 5012 } |
4996 | 5013 |
4997 inline bool RenderLayer::needsCompositingLayersRebuiltForOverflow(const RenderSt yle* oldStyle, const RenderStyle* newStyle) const | 5014 inline bool RenderLayer::needsCompositingLayersRebuiltForOverflow(const RenderSt yle* oldStyle, const RenderStyle* newStyle) const |
4998 { | 5015 { |
4999 ASSERT(newStyle); | 5016 ASSERT(newStyle); |
5000 return !isComposited() && oldStyle && (oldStyle->overflowX() != newStyle->ov erflowX()) && ancestorStackingContainer()->hasCompositingDescendant(); | 5017 return !backing() && oldStyle && (oldStyle->overflowX() != newStyle->overflo wX()) && ancestorStackingContainer()->hasCompositingDescendant(); |
5001 } | 5018 } |
5002 | 5019 |
5003 inline bool RenderLayer::needsCompositingLayersRebuiltForFilters(const RenderSty le* oldStyle, const RenderStyle* newStyle, bool didPaintWithFilters) const | 5020 inline bool RenderLayer::needsCompositingLayersRebuiltForFilters(const RenderSty le* oldStyle, const RenderStyle* newStyle, bool didPaintWithFilters) const |
5004 { | 5021 { |
5005 if (!hasOrHadFilters(oldStyle, newStyle)) | 5022 if (!hasOrHadFilters(oldStyle, newStyle)) |
5006 return false; | 5023 return false; |
5007 | 5024 |
5008 if (renderer()->animation()->isRunningAcceleratedAnimationOnRenderer(rendere r(), CSSPropertyWebkitFilter)) { | 5025 if (renderer()->animation()->isRunningAcceleratedAnimationOnRenderer(rendere r(), CSSPropertyWebkitFilter)) { |
5009 // When the compositor is performing the filter animation, we shouldn't touch the compositing layers. | 5026 // When the compositor is performing the filter animation, we shouldn't touch the compositing layers. |
5010 // All of the layers above us should have been promoted to compositing l ayers already. | 5027 // All of the layers above us should have been promoted to compositing l ayers already. |
(...skipping 23 matching lines...) Expand all Loading... | |
5034 } | 5051 } |
5035 | 5052 |
5036 void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle) | 5053 void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle) |
5037 { | 5054 { |
5038 if (!hasOrHadFilters(oldStyle, newStyle)) | 5055 if (!hasOrHadFilters(oldStyle, newStyle)) |
5039 return; | 5056 return; |
5040 | 5057 |
5041 updateOrRemoveFilterClients(); | 5058 updateOrRemoveFilterClients(); |
5042 // During an accelerated animation, both WebKit and the compositor animate p roperties. | 5059 // During an accelerated animation, both WebKit and the compositor animate p roperties. |
5043 // However, WebKit shouldn't ask the compositor to update its filters if the compositor is performing the animation. | 5060 // However, WebKit shouldn't ask the compositor to update its filters if the compositor is performing the animation. |
5044 bool shouldUpdateFilters = isComposited() && !renderer()->animation()->isRun ningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyWebkitFilter); | 5061 bool shouldUpdateFilters = backing() && !renderer()->animation()->isRunningA cceleratedAnimationOnRenderer(renderer(), CSSPropertyWebkitFilter); |
5045 if (shouldUpdateFilters) | 5062 if (shouldUpdateFilters) |
5046 backing()->updateFilters(renderer()->style()); | 5063 backing()->updateFilters(renderer()->style()); |
5047 updateOrRemoveFilterEffectRenderer(); | 5064 updateOrRemoveFilterEffectRenderer(); |
5048 } | 5065 } |
5049 | 5066 |
5050 void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle) | 5067 void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle) |
5051 { | 5068 { |
5052 updateIsNormalFlowOnly(); | 5069 updateIsNormalFlowOnly(); |
5053 | 5070 |
5054 if (m_scrollableArea) | 5071 if (m_scrollableArea) |
(...skipping 25 matching lines...) Expand all Loading... | |
5080 if (paintsWithFilters()) | 5097 if (paintsWithFilters()) |
5081 didPaintWithFilters = true; | 5098 didPaintWithFilters = true; |
5082 updateFilters(oldStyle, renderer()->style()); | 5099 updateFilters(oldStyle, renderer()->style()); |
5083 | 5100 |
5084 const RenderStyle* newStyle = renderer()->style(); | 5101 const RenderStyle* newStyle = renderer()->style(); |
5085 if (compositor()->updateLayerCompositingState(this) | 5102 if (compositor()->updateLayerCompositingState(this) |
5086 || needsCompositingLayersRebuiltForClip(oldStyle, newStyle) | 5103 || needsCompositingLayersRebuiltForClip(oldStyle, newStyle) |
5087 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) | 5104 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) |
5088 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters)) | 5105 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters)) |
5089 compositor()->setCompositingLayersNeedRebuild(); | 5106 compositor()->setCompositingLayersNeedRebuild(); |
5090 else if (isComposited()) | 5107 else if (backing()) |
5091 backing()->updateGraphicsLayerGeometry(); | 5108 backing()->updateGraphicsLayerGeometry(); |
5092 } | 5109 } |
5093 | 5110 |
5094 void RenderLayer::updateScrollableAreaSet(bool hasOverflow) | 5111 void RenderLayer::updateScrollableAreaSet(bool hasOverflow) |
5095 { | 5112 { |
5096 Frame* frame = renderer()->frame(); | 5113 Frame* frame = renderer()->frame(); |
5097 if (!frame) | 5114 if (!frame) |
5098 return; | 5115 return; |
5099 | 5116 |
5100 FrameView* frameView = frame->view(); | 5117 FrameView* frameView = frame->view(); |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5485 } | 5502 } |
5486 } | 5503 } |
5487 | 5504 |
5488 void showLayerTree(const WebCore::RenderObject* renderer) | 5505 void showLayerTree(const WebCore::RenderObject* renderer) |
5489 { | 5506 { |
5490 if (!renderer) | 5507 if (!renderer) |
5491 return; | 5508 return; |
5492 showLayerTree(renderer->enclosingLayer()); | 5509 showLayerTree(renderer->enclosingLayer()); |
5493 } | 5510 } |
5494 #endif | 5511 #endif |
OLD | NEW |