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

Side by Side Diff: Source/WebCore/rendering/RenderLayerCompositor.cpp

Issue 13431004: Remove empty layer hack in RenderLayerCompositor (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Created 7 years, 8 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
« no previous file with comments | « no previous file | no next file » | 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) 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 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 801
802 void RenderLayerCompositor::addToOverlapMap(OverlapMap& overlapMap, RenderLayer* layer, IntRect& layerBounds, bool& boundsComputed) 802 void RenderLayerCompositor::addToOverlapMap(OverlapMap& overlapMap, RenderLayer* layer, IntRect& layerBounds, bool& boundsComputed)
803 { 803 {
804 if (layer->isRootLayer()) 804 if (layer->isRootLayer())
805 return; 805 return;
806 806
807 if (!boundsComputed) { 807 if (!boundsComputed) {
808 // FIXME: If this layer's overlap bounds include its children, we don't need to add its 808 // FIXME: If this layer's overlap bounds include its children, we don't need to add its
809 // children's bounds to the overlap map. 809 // children's bounds to the overlap map.
810 layerBounds = enclosingIntRect(overlapMap.geometryMap().absoluteRect(lay er->overlapBounds())); 810 layerBounds = enclosingIntRect(overlapMap.geometryMap().absoluteRect(lay er->overlapBounds()));
811 // Empty rects never intersect, but we need them to for the purposes of overlap testing. 811 boundsComputed = true;
812 if (layerBounds.isEmpty()) 812 if (layerBounds.isEmpty())
813 layerBounds.setSize(IntSize(1, 1)); 813 return;
814 boundsComputed = true;
815 } 814 }
816 815
817 IntRect clipRect = pixelSnappedIntRect(layer->backgroundClipRect(RenderLayer ::ClipRectsContext(rootRenderLayer(), 0, AbsoluteClipRects)).rect()); // FIXME: Incorrect for CSS regions. 816 IntRect clipRect = pixelSnappedIntRect(layer->backgroundClipRect(RenderLayer ::ClipRectsContext(rootRenderLayer(), 0, AbsoluteClipRects)).rect()); // FIXME: Incorrect for CSS regions.
818 if (Settings* settings = m_renderView->document()->settings()) 817 if (Settings* settings = m_renderView->document()->settings())
819 if (!settings->applyPageScaleFactorInCompositor()) 818 if (!settings->applyPageScaleFactorInCompositor())
820 clipRect.scale(pageScaleFactor()); 819 clipRect.scale(pageScaleFactor());
821 clipRect.intersect(layerBounds); 820 clipRect.intersect(layerBounds);
822 overlapMap.add(layer, clipRect); 821 overlapMap.add(layer, clipRect);
823 } 822 }
824 823
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 layer->setHasCompositingDescendant(false); 890 layer->setHasCompositingDescendant(false);
892 891
893 RenderLayer::IndirectCompositingReason compositingReason = compositingState. m_subtreeIsCompositing ? RenderLayer::IndirectCompositingForStacking : RenderLay er::NoIndirectCompositingReason; 892 RenderLayer::IndirectCompositingReason compositingReason = compositingState. m_subtreeIsCompositing ? RenderLayer::IndirectCompositingForStacking : RenderLay er::NoIndirectCompositingReason;
894 893
895 bool haveComputedBounds = false; 894 bool haveComputedBounds = false;
896 IntRect absBounds; 895 IntRect absBounds;
897 if (overlapMap && !overlapMap->isEmpty() && compositingState.m_testingOverla p) { 896 if (overlapMap && !overlapMap->isEmpty() && compositingState.m_testingOverla p) {
898 // If we're testing for overlap, we only need to composite if we overlap something that is already composited. 897 // If we're testing for overlap, we only need to composite if we overlap something that is already composited.
899 absBounds = enclosingIntRect(overlapMap->geometryMap().absoluteRect(laye r->overlapBounds())); 898 absBounds = enclosingIntRect(overlapMap->geometryMap().absoluteRect(laye r->overlapBounds()));
900 899
901 // Empty rects never intersect, but we need them to for the purposes of overlap testing.
902 if (absBounds.isEmpty())
903 absBounds.setSize(IntSize(1, 1));
904 haveComputedBounds = true; 900 haveComputedBounds = true;
905 compositingReason = overlapMap->overlapsLayers(absBounds) ? RenderLayer: :IndirectCompositingForOverlap : RenderLayer::NoIndirectCompositingReason; 901 compositingReason = overlapMap->overlapsLayers(absBounds) ? RenderLayer: :IndirectCompositingForOverlap : RenderLayer::NoIndirectCompositingReason;
906 } 902 }
907 903
908 #if ENABLE(VIDEO) 904 #if ENABLE(VIDEO)
909 // Video is special. It's the only RenderLayer type that can both have 905 // Video is special. It's the only RenderLayer type that can both have
910 // RenderLayer children and whose children can't use its backing to render 906 // RenderLayer children and whose children can't use its backing to render
911 // into. These children (the controls) always need to be promoted into their 907 // into. These children (the controls) always need to be promoted into their
912 // own layers to draw on top of the accelerated video. 908 // own layers to draw on top of the accelerated video.
913 if (compositingState.m_compositingAncestor && compositingState.m_compositing Ancestor->renderer()->isVideo()) 909 if (compositingState.m_compositingAncestor && compositingState.m_compositing Ancestor->renderer()->isVideo())
(...skipping 2243 matching lines...) Expand 10 before | Expand all | Expand 10 after
3157 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); 3153 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea");
3158 info.addMember(m_layerForHeader, "layerForHeader"); 3154 info.addMember(m_layerForHeader, "layerForHeader");
3159 info.addMember(m_layerForFooter, "layerForFooter"); 3155 info.addMember(m_layerForFooter, "layerForFooter");
3160 #endif 3156 #endif
3161 info.addMember(m_layerUpdater, "layerUpdater"); 3157 info.addMember(m_layerUpdater, "layerUpdater");
3162 } 3158 }
3163 3159
3164 } // namespace WebCore 3160 } // namespace WebCore
3165 3161
3166 #endif // USE(ACCELERATED_COMPOSITING) 3162 #endif // USE(ACCELERATED_COMPOSITING)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698