Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 204 , m_showRepaintCounter(false) | 204 , m_showRepaintCounter(false) |
| 205 , m_needsToRecomputeCompositingRequirements(false) | 205 , m_needsToRecomputeCompositingRequirements(false) |
| 206 , m_needsToUpdateLayerTreeGeometry(false) | 206 , m_needsToUpdateLayerTreeGeometry(false) |
| 207 , m_pendingUpdateType(GraphicsLayerUpdater::DoNotForceUpdate) | 207 , m_pendingUpdateType(GraphicsLayerUpdater::DoNotForceUpdate) |
| 208 , m_compositing(false) | 208 , m_compositing(false) |
| 209 , m_compositingLayersNeedRebuild(false) | 209 , m_compositingLayersNeedRebuild(false) |
| 210 , m_forceCompositingMode(false) | 210 , m_forceCompositingMode(false) |
| 211 , m_needsUpdateCompositingRequirementsState(false) | 211 , m_needsUpdateCompositingRequirementsState(false) |
| 212 , m_isTrackingRepaints(false) | 212 , m_isTrackingRepaints(false) |
| 213 , m_rootLayerAttachment(RootLayerUnattached) | 213 , m_rootLayerAttachment(RootLayerUnattached) |
| 214 , m_layersChanged(true) | |
| 214 { | 215 { |
| 215 } | 216 } |
| 216 | 217 |
| 217 RenderLayerCompositor::~RenderLayerCompositor() | 218 RenderLayerCompositor::~RenderLayerCompositor() |
| 218 { | 219 { |
| 219 ASSERT(m_rootLayerAttachment == RootLayerUnattached); | 220 ASSERT(m_rootLayerAttachment == RootLayerUnattached); |
| 220 } | 221 } |
| 221 | 222 |
| 222 void RenderLayerCompositor::enableCompositingMode(bool enable /* = true */) | 223 void RenderLayerCompositor::enableCompositingMode(bool enable /* = true */) |
| 223 { | 224 { |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 376 m_pendingUpdateType = GraphicsLayerUpdater::ForceUpdate; | 377 m_pendingUpdateType = GraphicsLayerUpdater::ForceUpdate; |
| 377 break; | 378 break; |
| 378 case CompositingUpdateOnCompositedScroll: | 379 case CompositingUpdateOnCompositedScroll: |
| 379 m_needsToUpdateLayerTreeGeometry = true; | 380 m_needsToUpdateLayerTreeGeometry = true; |
| 380 // FIXME: Ideally we'd be smarter about tracking dirtiness and wouldn't need a ForceUpdate here. | 381 // FIXME: Ideally we'd be smarter about tracking dirtiness and wouldn't need a ForceUpdate here. |
| 381 m_pendingUpdateType = GraphicsLayerUpdater::ForceUpdate; | 382 m_pendingUpdateType = GraphicsLayerUpdater::ForceUpdate; |
| 382 break; | 383 break; |
| 383 case CompositingUpdateAfterCanvasContextChange: | 384 case CompositingUpdateAfterCanvasContextChange: |
| 384 m_needsToUpdateLayerTreeGeometry = true; | 385 m_needsToUpdateLayerTreeGeometry = true; |
| 385 break; | 386 break; |
| 387 case CompositingMinUpdateAfterStyleChange: | |
| 388 if (m_layersChanged) | |
|
Ian Vollick
2014/03/18 11:59:16
I think this is a layering violation. If I'm under
yaojie.yan
2014/03/20 07:43:19
Yes, but my REAL purpose is to add some heuristic
| |
| 389 m_needsToRecomputeCompositingRequirements = true; | |
| 390 else | |
| 391 m_needsToUpdateLayerTreeGeometry = true; | |
| 392 break; | |
| 393 | |
| 386 } | 394 } |
| 387 | 395 |
| 388 m_renderView.frameView()->scheduleAnimation(); | 396 m_renderView.frameView()->scheduleAnimation(); |
| 389 } | 397 } |
| 390 | 398 |
| 391 void RenderLayerCompositor::updateCompositingLayers() | 399 void RenderLayerCompositor::updateCompositingLayers() |
| 392 { | 400 { |
| 393 TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateCompositingLay ers"); | 401 TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateCompositingLay ers"); |
| 394 | 402 |
| 395 // FIXME: We should carefully clean up the awkward early-exit semantics, bal ancing | 403 // FIXME: We should carefully clean up the awkward early-exit semantics, bal ancing |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 466 | 474 |
| 467 { | 475 { |
| 468 TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateHasVis ibleNonLayerContentLoop"); | 476 TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateHasVis ibleNonLayerContentLoop"); |
| 469 const FrameView::ScrollableAreaSet* scrollableAreas = m_renderView.f rameView()->scrollableAreas(); | 477 const FrameView::ScrollableAreaSet* scrollableAreas = m_renderView.f rameView()->scrollableAreas(); |
| 470 if (scrollableAreas) { | 478 if (scrollableAreas) { |
| 471 for (FrameView::ScrollableAreaSet::iterator it = scrollableAreas ->begin(); it != scrollableAreas->end(); ++it) | 479 for (FrameView::ScrollableAreaSet::iterator it = scrollableAreas ->begin(); it != scrollableAreas->end(); ++it) |
| 472 (*it)->updateHasVisibleNonLayerContent(); | 480 (*it)->updateHasVisibleNonLayerContent(); |
| 473 } | 481 } |
| 474 } | 482 } |
| 475 | 483 |
| 484 m_layersChanged = layersChanged; | |
|
Ian Vollick
2014/03/18 11:59:16
This value should not persist from update to updat
| |
| 476 if (layersChanged) | 485 if (layersChanged) |
| 477 needHierarchyAndGeometryUpdate = true; | 486 needHierarchyAndGeometryUpdate = true; |
| 478 } | 487 } |
| 479 | 488 |
| 480 if (needHierarchyAndGeometryUpdate) { | 489 if (needHierarchyAndGeometryUpdate) { |
| 481 // Update the hierarchy of the compositing layers. | 490 // Update the hierarchy of the compositing layers. |
| 482 GraphicsLayerVector childList; | 491 GraphicsLayerVector childList; |
| 483 { | 492 { |
| 484 TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::rebuildTree") ; | 493 TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::rebuildTree") ; |
| 485 GraphicsLayerUpdater(m_renderView).rebuildTree(*updateRoot, updateTy pe, childList, 0); | 494 GraphicsLayerUpdater(m_renderView).rebuildTree(*updateRoot, updateTy pe, childList, 0); |
| 486 } | 495 } |
| 487 | 496 |
| 488 // Host the document layer in the RenderView's root layer. | 497 // Host the document layer in the RenderView's root layer. |
| 489 if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isMainFra me()) { | 498 if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isMainFra me()) { |
| 490 RenderVideo* video = findFullscreenVideoRenderer(m_renderView.docume nt()); | 499 RenderVideo* video = findFullscreenVideoRenderer(m_renderView.docume nt()); |
| 491 if (video && video->hasCompositedLayerMapping()) { | 500 if (video && video->hasCompositedLayerMapping()) { |
| 492 childList.clear(); | 501 childList.clear(); |
| 493 childList.append(video->compositedLayerMapping()->mainGraphicsLa yer()); | 502 childList.append(video->compositedLayerMapping()->mainGraphicsLa yer()); |
| 494 } | 503 } |
| 495 } | 504 } |
| 496 | 505 |
| 497 if (childList.isEmpty()) | 506 if (childList.isEmpty()) |
| 498 destroyRootLayer(); | 507 destroyRootLayer(); |
| 499 else | 508 else if (m_rootContentLayer) |
| 500 m_rootContentLayer->setChildren(childList); | 509 m_rootContentLayer->setChildren(childList); |
| 501 } else if (needGeometryUpdate) { | 510 } else if (needGeometryUpdate) { |
| 502 // We just need to do a geometry update. This is only used for position: fixed scrolling; | 511 // We just need to do a geometry update. This is only used for position: fixed scrolling; |
| 503 // most of the time, geometry is updated via RenderLayer::styleChanged() . | 512 // most of the time, geometry is updated via RenderLayer::styleChanged() . |
| 504 TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::updateRecursive") ; | 513 TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::updateRecursive") ; |
| 505 GraphicsLayerUpdater(m_renderView).updateRecursive(*updateRoot, updateTy pe); | 514 GraphicsLayerUpdater(m_renderView).updateRecursive(*updateRoot, updateTy pe); |
| 506 } | 515 } |
| 507 | 516 |
| 508 ASSERT(updateRoot || !m_compositingLayersNeedRebuild); | 517 ASSERT(updateRoot || !m_compositingLayersNeedRebuild); |
| 509 | 518 |
| (...skipping 1733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2243 } else if (graphicsLayer == m_scrollLayer.get()) { | 2252 } else if (graphicsLayer == m_scrollLayer.get()) { |
| 2244 name = "LocalFrame Scrolling Layer"; | 2253 name = "LocalFrame Scrolling Layer"; |
| 2245 } else { | 2254 } else { |
| 2246 ASSERT_NOT_REACHED(); | 2255 ASSERT_NOT_REACHED(); |
| 2247 } | 2256 } |
| 2248 | 2257 |
| 2249 return name; | 2258 return name; |
| 2250 } | 2259 } |
| 2251 | 2260 |
| 2252 } // namespace WebCore | 2261 } // namespace WebCore |
| OLD | NEW |