Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: Source/core/rendering/compositing/CompositedLayerMapping.cpp

Issue 208643002: CompositedLayerMapping should use dirty bits for bounds update (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010, 2011 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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 // so don't clip these, either. 343 // so don't clip these, either.
344 if (!compositor()->clippedByAncestor(&m_owningLayer)) 344 if (!compositor()->clippedByAncestor(&m_owningLayer))
345 return true; 345 return true;
346 346
347 if (m_owningLayer.renderer()->containingBlock()->enclosingLayer() != m_ownin gLayer.ancestorScrollingLayer()) 347 if (m_owningLayer.renderer()->containingBlock()->enclosingLayer() != m_ownin gLayer.ancestorScrollingLayer())
348 return true; 348 return true;
349 349
350 return false; 350 return false;
351 } 351 }
352 352
353 void CompositedLayerMapping::updateCompositedBounds() 353 void CompositedLayerMapping::updateCompositedBounds(GraphicsLayerUpdater::Update Type updateType)
354 { 354 {
355 if (!m_needToUpdateGeometry && updateType != GraphicsLayerUpdater::ForceUpda te)
356 return;
357
355 // We need to know if we draw content in order to update our bounds (this ha s an effect 358 // We need to know if we draw content in order to update our bounds (this ha s an effect
356 // on whether or not descendands will paint into our backing). Update this v alue now. 359 // on whether or not descendands will paint into our backing). Update this v alue now.
357 updateDrawsContent(); 360 updateDrawsContent();
358 361
359 LayoutRect layerBounds = compositor()->calculateCompositedBounds(&m_owningLa yer, &m_owningLayer); 362 LayoutRect layerBounds = compositor()->calculateCompositedBounds(&m_owningLa yer, &m_owningLayer);
360 363
361 // Clip to the size of the document or enclosing overflow-scroll layer. 364 // Clip to the size of the document or enclosing overflow-scroll layer.
362 // If this or an ancestor is transformed, we can't currently compute the cor rect rect to intersect with. 365 // If this or an ancestor is transformed, we can't currently compute the cor rect rect to intersect with.
363 // We'd need RenderObject::convertContainerToLocalQuad(), which doesn't yet exist. 366 // We'd need RenderObject::convertContainerToLocalQuad(), which doesn't yet exist.
364 if (shouldClipCompositedBounds()) { 367 if (shouldClipCompositedBounds()) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 { 421 {
419 RenderLayerCompositor* layerCompositor = compositor(); 422 RenderLayerCompositor* layerCompositor = compositor();
420 if (!layerCompositor->compositingLayersNeedRebuild()) { 423 if (!layerCompositor->compositingLayersNeedRebuild()) {
421 // Calling updateGraphicsLayerGeometry() here gives incorrect results, b ecause the 424 // Calling updateGraphicsLayerGeometry() here gives incorrect results, b ecause the
422 // position of this layer's GraphicsLayer depends on the position of our compositing 425 // position of this layer's GraphicsLayer depends on the position of our compositing
423 // ancestor's GraphicsLayer. That cannot be determined until all the des cendant 426 // ancestor's GraphicsLayer. That cannot be determined until all the des cendant
424 // RenderLayers of that ancestor have been processed via updateLayerPosi tions(). 427 // RenderLayers of that ancestor have been processed via updateLayerPosi tions().
425 // 428 //
426 // The solution is to update compositing children of this layer here, 429 // The solution is to update compositing children of this layer here,
427 // via updateCompositingChildrenGeometry(). 430 // via updateCompositingChildrenGeometry().
428 updateCompositedBounds(); 431 updateCompositedBounds(GraphicsLayerUpdater::ForceUpdate);
429 layerCompositor->updateCompositingDescendantGeometry(m_owningLayer.stack ingNode(), &m_owningLayer, flags & CompositingChildrenOnly); 432 layerCompositor->updateCompositingDescendantGeometry(m_owningLayer.stack ingNode(), &m_owningLayer, flags & CompositingChildrenOnly);
430 433
431 if (flags & IsUpdateRoot) { 434 if (flags & IsUpdateRoot) {
432 updateGraphicsLayerGeometry(GraphicsLayerUpdater::ForceUpdate); 435 updateGraphicsLayerGeometry(GraphicsLayerUpdater::ForceUpdate);
433 layerCompositor->updateRootLayerPosition(); 436 layerCompositor->updateRootLayerPosition();
434 RenderLayerStackingNode* stackingContainer = m_owningLayer.stackingN ode()->enclosingStackingContainerNode(); 437 RenderLayerStackingNode* stackingContainer = m_owningLayer.stackingN ode()->enclosingStackingContainerNode();
435 if (!layerCompositor->compositingLayersNeedRebuild() && stackingCont ainer && (stackingContainer != m_owningLayer.stackingNode())) 438 if (!layerCompositor->compositingLayersNeedRebuild() && stackingCont ainer && (stackingContainer != m_owningLayer.stackingNode()))
436 layerCompositor->updateCompositingDescendantGeometry(stackingCon tainer, stackingContainer->layer(), flags & CompositingChildrenOnly); 439 layerCompositor->updateCompositingDescendantGeometry(stackingCon tainer, stackingContainer->layer(), flags & CompositingChildrenOnly);
437 } 440 }
438 } 441 }
(...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after
2146 } else if (graphicsLayer == m_scrollingContentsLayer.get()) { 2149 } else if (graphicsLayer == m_scrollingContentsLayer.get()) {
2147 name = "Scrolling Contents Layer"; 2150 name = "Scrolling Contents Layer";
2148 } else { 2151 } else {
2149 ASSERT_NOT_REACHED(); 2152 ASSERT_NOT_REACHED();
2150 } 2153 }
2151 2154
2152 return name; 2155 return name;
2153 } 2156 }
2154 2157
2155 } // namespace WebCore 2158 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/compositing/CompositedLayerMapping.h ('k') | Source/core/rendering/compositing/GraphicsLayerUpdater.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698