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

Side by Side Diff: trunk/Source/core/rendering/RenderLayer.cpp

Issue 180953009: Revert 168554 "Reduce compositing update in Silk's toggle_drawer..." (Closed) Base URL: svn://svn.chromium.org/blink/
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
« no previous file with comments | « no previous file | trunk/Source/core/rendering/compositing/CompositedLayerMapping.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 } 703 }
704 } 704 }
705 705
706 void RenderLayer::setHasVisibleContent() 706 void RenderLayer::setHasVisibleContent()
707 { 707 {
708 if (m_hasVisibleContent && !m_visibleContentStatusDirty) { 708 if (m_hasVisibleContent && !m_visibleContentStatusDirty) {
709 ASSERT(!parent() || parent()->hasVisibleDescendant()); 709 ASSERT(!parent() || parent()->hasVisibleDescendant());
710 return; 710 return;
711 } 711 }
712 712
713 m_visibleContentStatusDirty = false;
713 m_hasVisibleContent = true; 714 m_hasVisibleContent = true;
714 m_visibleContentStatusDirty = false;
715
716 {
717 // FIXME: We can remove this code once we remove the recursive tree
718 // walk inside updateGraphicsLayerGeometry.
719 DisableCompositingQueryAsserts disabler;
720 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
721 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate() ;
722 }
723
724 repainter().computeRepaintRects(renderer()->containerForRepaint()); 715 repainter().computeRepaintRects(renderer()->containerForRepaint());
725 if (!m_stackingNode->isNormalFlowOnly()) { 716 if (!m_stackingNode->isNormalFlowOnly()) {
726 // We don't collect invisible layers in z-order lists if we are not in c ompositing mode. 717 // We don't collect invisible layers in z-order lists if we are not in c ompositing mode.
727 // As we became visible, we need to dirty our stacking containers ancest ors to be properly 718 // As we became visible, we need to dirty our stacking containers ancest ors to be properly
728 // collected. FIXME: When compositing, we could skip this dirtying phase . 719 // collected. FIXME: When compositing, we could skip this dirtying phase .
729 for (RenderLayerStackingNode* sc = m_stackingNode->ancestorStackingConta inerNode(); sc; sc = sc->ancestorStackingContainerNode()) { 720 for (RenderLayerStackingNode* sc = m_stackingNode->ancestorStackingConta inerNode(); sc; sc = sc->ancestorStackingContainerNode()) {
730 sc->dirtyZOrderLists(); 721 sc->dirtyZOrderLists();
731 if (sc->layer()->hasVisibleContent()) 722 if (sc->layer()->hasVisibleContent())
732 break; 723 break;
733 } 724 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 841
851 m_blendInfo.setChildLayerHasBlendMode(childLayerHasBlendMode); 842 m_blendInfo.setChildLayerHasBlendMode(childLayerHasBlendMode);
852 843
853 if (childLayerHasBlendMode) 844 if (childLayerHasBlendMode)
854 break; 845 break;
855 } 846 }
856 m_blendInfo.setChildLayerHasBlendModeStatusDirty(false); 847 m_blendInfo.setChildLayerHasBlendModeStatusDirty(false);
857 } 848 }
858 849
859 if (m_visibleContentStatusDirty) { 850 if (m_visibleContentStatusDirty) {
860 bool previouslyHasVisibleCOntent = m_hasVisibleContent;
861 if (renderer()->style()->visibility() == VISIBLE) 851 if (renderer()->style()->visibility() == VISIBLE)
862 m_hasVisibleContent = true; 852 m_hasVisibleContent = true;
863 else { 853 else {
864 // layer may be hidden but still have some visible content, check fo r this 854 // layer may be hidden but still have some visible content, check fo r this
865 m_hasVisibleContent = false; 855 m_hasVisibleContent = false;
866 RenderObject* r = renderer()->firstChild(); 856 RenderObject* r = renderer()->firstChild();
867 while (r) { 857 while (r) {
868 if (r->style()->visibility() == VISIBLE && !r->hasLayer()) { 858 if (r->style()->visibility() == VISIBLE && !r->hasLayer()) {
869 m_hasVisibleContent = true; 859 m_hasVisibleContent = true;
870 break; 860 break;
871 } 861 }
872 if (r->firstChild() && !r->hasLayer()) 862 if (r->firstChild() && !r->hasLayer())
873 r = r->firstChild(); 863 r = r->firstChild();
874 else if (r->nextSibling()) 864 else if (r->nextSibling())
875 r = r->nextSibling(); 865 r = r->nextSibling();
876 else { 866 else {
877 do { 867 do {
878 r = r->parent(); 868 r = r->parent();
879 if (r == renderer()) 869 if (r == renderer())
880 r = 0; 870 r = 0;
881 } while (r && !r->nextSibling()); 871 } while (r && !r->nextSibling());
882 if (r) 872 if (r)
883 r = r->nextSibling(); 873 r = r->nextSibling();
884 } 874 }
885 } 875 }
886 } 876 }
887 m_visibleContentStatusDirty = false; 877 m_visibleContentStatusDirty = false;
888
889 // FIXME: We can remove this code once we remove the recursive tree
890 // walk inside updateGraphicsLayerGeometry.
891 if (m_hasVisibleContent != previouslyHasVisibleCOntent) {
892 DisableCompositingQueryAsserts disabler;
893 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
894 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpda te();
895 }
896 } 878 }
897 } 879 }
898 880
899 void RenderLayer::dirty3DTransformedDescendantStatus() 881 void RenderLayer::dirty3DTransformedDescendantStatus()
900 { 882 {
901 RenderLayerStackingNode* stackingNode = m_stackingNode->ancestorStackingCont ainerNode(); 883 RenderLayerStackingNode* stackingNode = m_stackingNode->ancestorStackingCont ainerNode();
902 if (!stackingNode) 884 if (!stackingNode)
903 return; 885 return;
904 886
905 stackingNode->layer()->m_3DTransformedDescendantStatusDirty = true; 887 stackingNode->layer()->m_3DTransformedDescendantStatusDirty = true;
(...skipping 2616 matching lines...) Expand 10 before | Expand all | Expand 10 after
3522 CompositedLayerMappingPtr RenderLayer::compositedLayerMapping() const 3504 CompositedLayerMappingPtr RenderLayer::compositedLayerMapping() const
3523 { 3505 {
3524 ASSERT(isAllowedToQueryCompositingState()); 3506 ASSERT(isAllowedToQueryCompositingState());
3525 return m_compositedLayerMapping.get(); 3507 return m_compositedLayerMapping.get();
3526 } 3508 }
3527 3509
3528 CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping() 3510 CompositedLayerMappingPtr RenderLayer::ensureCompositedLayerMapping()
3529 { 3511 {
3530 if (!m_compositedLayerMapping) { 3512 if (!m_compositedLayerMapping) {
3531 m_compositedLayerMapping = adoptPtr(new CompositedLayerMapping(this)); 3513 m_compositedLayerMapping = adoptPtr(new CompositedLayerMapping(this));
3532 m_compositedLayerMapping->setNeedsGeometryUpdate();
3533 3514
3534 updateOrRemoveFilterEffectRenderer(); 3515 updateOrRemoveFilterEffectRenderer();
3535 3516
3536 if (RuntimeEnabledFeatures::cssCompositingEnabled()) 3517 if (RuntimeEnabledFeatures::cssCompositingEnabled())
3537 compositedLayerMapping()->setBlendMode(m_blendInfo.blendMode()); 3518 compositedLayerMapping()->setBlendMode(m_blendInfo.blendMode());
3538 } 3519 }
3539 return m_compositedLayerMapping.get(); 3520 return m_compositedLayerMapping.get();
3540 } 3521 }
3541 3522
3542 void RenderLayer::clearCompositedLayerMapping(bool layerBeingDestroyed) 3523 void RenderLayer::clearCompositedLayerMapping(bool layerBeingDestroyed)
3543 { 3524 {
3544 if (!layerBeingDestroyed)
3545 m_compositedLayerMapping->setNeedsGeometryUpdate();
3546
3547 m_compositedLayerMapping.clear(); 3525 m_compositedLayerMapping.clear();
3548 3526
3549 if (!layerBeingDestroyed) 3527 if (!layerBeingDestroyed)
3550 updateOrRemoveFilterEffectRenderer(); 3528 updateOrRemoveFilterEffectRenderer();
3551 } 3529 }
3552 3530
3553 bool RenderLayer::hasCompositedMask() const 3531 bool RenderLayer::hasCompositedMask() const
3554 { 3532 {
3555 return m_compositedLayerMapping && m_compositedLayerMapping->hasMaskLayer(); 3533 return m_compositedLayerMapping && m_compositedLayerMapping->hasMaskLayer();
3556 } 3534 }
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
3892 DisableCompositingQueryAsserts disabler; 3870 DisableCompositingQueryAsserts disabler;
3893 if (paintsWithFilters()) 3871 if (paintsWithFilters())
3894 didPaintWithFilters = true; 3872 didPaintWithFilters = true;
3895 updateFilters(oldStyle, renderer()->style()); 3873 updateFilters(oldStyle, renderer()->style());
3896 } 3874 }
3897 3875
3898 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues 3876 // FIXME: Remove incremental compositing updates after fixing the chicken/eg g issues
3899 // https://code.google.com/p/chromium/issues/detail?id=343756 3877 // https://code.google.com/p/chromium/issues/detail?id=343756
3900 DisableCompositingQueryAsserts disabler; 3878 DisableCompositingQueryAsserts disabler;
3901 3879
3902 if (RenderLayer* compositingLayer = enclosingCompositingLayer())
3903 compositingLayer->compositedLayerMapping()->setNeedsGeometryUpdate();
3904
3905 const RenderStyle* newStyle = renderer()->style(); 3880 const RenderStyle* newStyle = renderer()->style();
3906 3881
3907 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks); 3882 compositor()->updateLayerCompositingState(this, RenderLayerCompositor::UseCh ickenEggHacks);
3908 // FIXME: this compositing logic should be pushed into the compositing code, not here. 3883 // FIXME: this compositing logic should be pushed into the compositing code, not here.
3909 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle) 3884 if (needsCompositingLayersRebuiltForClip(oldStyle, newStyle)
3910 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle) 3885 || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle)
3911 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters) 3886 || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintW ithFilters)
3912 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) { 3887 || needsCompositingLayersRebuiltForBlending(oldStyle, newStyle)) {
3913 compositor()->setCompositingLayersNeedRebuild(); 3888 compositor()->setCompositingLayersNeedRebuild();
3914 } 3889 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
4063 } 4038 }
4064 } 4039 }
4065 4040
4066 void showLayerTree(const WebCore::RenderObject* renderer) 4041 void showLayerTree(const WebCore::RenderObject* renderer)
4067 { 4042 {
4068 if (!renderer) 4043 if (!renderer)
4069 return; 4044 return;
4070 showLayerTree(renderer->enclosingLayer()); 4045 showLayerTree(renderer->enclosingLayer());
4071 } 4046 }
4072 #endif 4047 #endif
OLDNEW
« no previous file with comments | « no previous file | trunk/Source/core/rendering/compositing/CompositedLayerMapping.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698