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

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

Issue 708213002: Remove the HasOwnBackingButPaintsIntoAncestor compositing state. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed more tests. Created 6 years, 1 month 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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 return 0; 157 return 0;
158 158
159 return page->scrollingCoordinator(); 159 return page->scrollingCoordinator();
160 } 160 }
161 161
162 CompositedLayerMapping::CompositedLayerMapping(RenderLayer& layer) 162 CompositedLayerMapping::CompositedLayerMapping(RenderLayer& layer)
163 : m_owningLayer(layer) 163 : m_owningLayer(layer)
164 , m_contentOffsetInCompositingLayerDirty(false) 164 , m_contentOffsetInCompositingLayerDirty(false)
165 , m_pendingUpdateScope(GraphicsLayerUpdateNone) 165 , m_pendingUpdateScope(GraphicsLayerUpdateNone)
166 , m_isMainFrameRenderViewLayer(false) 166 , m_isMainFrameRenderViewLayer(false)
167 , m_requiresOwnBackingStoreForIntrinsicReasons(false)
168 , m_requiresOwnBackingStoreForAncestorReasons(false)
169 , m_backgroundLayerPaintsFixedRootBackground(false) 167 , m_backgroundLayerPaintsFixedRootBackground(false)
170 , m_scrollingContentsAreEmpty(false) 168 , m_scrollingContentsAreEmpty(false)
171 { 169 {
172 if (layer.isRootLayer() && renderer()->frame()->isMainFrame()) 170 if (layer.isRootLayer() && renderer()->frame()->isMainFrame())
173 m_isMainFrameRenderViewLayer = true; 171 m_isMainFrameRenderViewLayer = true;
174 172
175 createPrimaryGraphicsLayer(); 173 createPrimaryGraphicsLayer();
176 } 174 }
177 175
178 CompositedLayerMapping::~CompositedLayerMapping() 176 CompositedLayerMapping::~CompositedLayerMapping()
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 return; 1137 return;
1140 1138
1141 if (!m_scrollingContentsAreEmpty) { 1139 if (!m_scrollingContentsAreEmpty) {
1142 // In this case, the selection will be painted directly into m_scrolling ContentsLayer. 1140 // In this case, the selection will be painted directly into m_scrolling ContentsLayer.
1143 m_scrollingBlockSelectionLayer->setDrawsContent(false); 1141 m_scrollingBlockSelectionLayer->setDrawsContent(false);
1144 return; 1142 return;
1145 } 1143 }
1146 1144
1147 const IntRect blockSelectionGapsBounds = m_owningLayer.blockSelectionGapsBou nds(); 1145 const IntRect blockSelectionGapsBounds = m_owningLayer.blockSelectionGapsBou nds();
1148 const bool shouldDrawContent = !blockSelectionGapsBounds.isEmpty(); 1146 const bool shouldDrawContent = !blockSelectionGapsBounds.isEmpty();
1149 m_scrollingBlockSelectionLayer->setDrawsContent(!paintsIntoCompositedAncesto r() && shouldDrawContent); 1147 m_scrollingBlockSelectionLayer->setDrawsContent(shouldDrawContent);
1150 if (!shouldDrawContent) 1148 if (!shouldDrawContent)
1151 return; 1149 return;
1152 // FIXME: Remove the flooredIntSize conversion. crbug.com/414283. 1150 // FIXME: Remove the flooredIntSize conversion. crbug.com/414283.
1153 const IntPoint position = blockSelectionGapsBounds.location() + flooredIntSi ze(m_owningLayer.scrollableArea()->adjustedScrollOffset()); 1151 const IntPoint position = blockSelectionGapsBounds.location() + flooredIntSi ze(m_owningLayer.scrollableArea()->adjustedScrollOffset());
1154 if (m_scrollingBlockSelectionLayer->size() == blockSelectionGapsBounds.size( ) && m_scrollingBlockSelectionLayer->position() == position) 1152 if (m_scrollingBlockSelectionLayer->size() == blockSelectionGapsBounds.size( ) && m_scrollingBlockSelectionLayer->position() == position)
1155 return; 1153 return;
1156 1154
1157 m_scrollingBlockSelectionLayer->setPosition(position); 1155 m_scrollingBlockSelectionLayer->setPosition(position);
1158 m_scrollingBlockSelectionLayer->setSize(blockSelectionGapsBounds.size()); 1156 m_scrollingBlockSelectionLayer->setSize(blockSelectionGapsBounds.size());
1159 m_scrollingBlockSelectionLayer->setOffsetFromRenderer(toIntSize(blockSelecti onGapsBounds.location()), GraphicsLayer::SetNeedsDisplay); 1157 m_scrollingBlockSelectionLayer->setOffsetFromRenderer(toIntSize(blockSelecti onGapsBounds.location()), GraphicsLayer::SetNeedsDisplay);
1160 } 1158 }
1161 1159
1162 void CompositedLayerMapping::updateDrawsContent() 1160 void CompositedLayerMapping::updateDrawsContent()
1163 { 1161 {
1164 bool hasPaintedContent = containsPaintedContent(); 1162 bool hasPaintedContent = containsPaintedContent();
1165 m_graphicsLayer->setDrawsContent(hasPaintedContent); 1163 m_graphicsLayer->setDrawsContent(hasPaintedContent);
1166 1164
1167 if (m_scrollingLayer) { 1165 if (m_scrollingLayer) {
1168 // m_scrollingLayer never has backing store. 1166 // m_scrollingLayer never has backing store.
1169 // m_scrollingContentsLayer only needs backing store if the scrolled con tents need to paint. 1167 // m_scrollingContentsLayer only needs backing store if the scrolled con tents need to paint.
1170 m_scrollingContentsAreEmpty = !m_owningLayer.hasVisibleContent() || !(re nderer()->hasBackground() || paintsChildren()); 1168 m_scrollingContentsAreEmpty = !m_owningLayer.hasVisibleContent() || !(re nderer()->hasBackground() || paintsChildren());
1171 m_scrollingContentsLayer->setDrawsContent(!paintsIntoCompositedAncestor( ) && !m_scrollingContentsAreEmpty); 1169 m_scrollingContentsLayer->setDrawsContent(!m_scrollingContentsAreEmpty);
1172 updateScrollingBlockSelection(); 1170 updateScrollingBlockSelection();
1173 } 1171 }
1174 1172
1175 if (hasPaintedContent && isAcceleratedCanvas(renderer())) { 1173 if (hasPaintedContent && isAcceleratedCanvas(renderer())) {
1176 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node() )->renderingContext(); 1174 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node() )->renderingContext();
1177 // Content layer may be null if context is lost. 1175 // Content layer may be null if context is lost.
1178 if (WebLayer* contentLayer = context->platformLayer()) { 1176 if (WebLayer* contentLayer = context->platformLayer()) {
1179 Color bgColor(Color::transparent); 1177 Color bgColor(Color::transparent);
1180 if (contentLayerSupportsDirectBackgroundComposition(renderer())) { 1178 if (contentLayerSupportsDirectBackgroundComposition(renderer())) {
1181 bgColor = rendererBackgroundColor(); 1179 bgColor = rendererBackgroundColor();
1182 hasPaintedContent = false; 1180 hasPaintedContent = false;
1183 } 1181 }
1184 contentLayer->setBackgroundColor(bgColor.rgb()); 1182 contentLayer->setBackgroundColor(bgColor.rgb());
1185 } 1183 }
1186 } 1184 }
1187 1185
1188 // FIXME: we could refine this to only allocate backings for one of these la yers if possible. 1186 // FIXME: we could refine this to only allocate backings for one of these la yers if possible.
1189 if (m_foregroundLayer) 1187 if (m_foregroundLayer)
1190 m_foregroundLayer->setDrawsContent(hasPaintedContent); 1188 m_foregroundLayer->setDrawsContent(hasPaintedContent);
1191 1189
1192 if (m_backgroundLayer) 1190 if (m_backgroundLayer)
1193 m_backgroundLayer->setDrawsContent(hasPaintedContent); 1191 m_backgroundLayer->setDrawsContent(hasPaintedContent);
1194 1192
1195 if (m_maskLayer) 1193 if (m_maskLayer)
1196 m_maskLayer->setDrawsContent(!paintsIntoCompositedAncestor()); 1194 m_maskLayer->setDrawsContent(true);
1197 1195
1198 if (m_childClippingMaskLayer) 1196 if (m_childClippingMaskLayer)
1199 m_childClippingMaskLayer->setDrawsContent(!paintsIntoCompositedAncestor( )); 1197 m_childClippingMaskLayer->setDrawsContent(true);
1200 } 1198 }
1201 1199
1202 void CompositedLayerMapping::updateChildrenTransform() 1200 void CompositedLayerMapping::updateChildrenTransform()
1203 { 1201 {
1204 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { 1202 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) {
1205 childTransformLayer->setTransform(owningLayer().perspectiveTransform()); 1203 childTransformLayer->setTransform(owningLayer().perspectiveTransform());
1206 childTransformLayer->setTransformOrigin(FloatPoint3D(childTransformLayer ->size().width() * 0.5f, childTransformLayer->size().height() * 0.5f, 0.f)); 1204 childTransformLayer->setTransformOrigin(FloatPoint3D(childTransformLayer ->size().width() * 0.5f, childTransformLayer->size().height() * 0.5f, 0.f));
1207 } 1205 }
1208 1206
1209 updateShouldFlattenTransform(); 1207 updateShouldFlattenTransform();
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
1693 1691
1694 // If we found a composited layer, regardless of whether it actually 1692 // If we found a composited layer, regardless of whether it actually
1695 // paints into it, we want to compute opacity relative to it. So we can 1693 // paints into it, we want to compute opacity relative to it. So we can
1696 // break here. 1694 // break here.
1697 // 1695 //
1698 // FIXME: with grouped backings, a composited descendant will have to 1696 // FIXME: with grouped backings, a composited descendant will have to
1699 // continue past the grouped (squashed) layers that its parents may 1697 // continue past the grouped (squashed) layers that its parents may
1700 // contribute to. This whole confusion can be avoided by specifying 1698 // contribute to. This whole confusion can be avoided by specifying
1701 // explicitly the composited ancestor where we would stop accumulating 1699 // explicitly the composited ancestor where we would stop accumulating
1702 // opacity. 1700 // opacity.
1703 if (curr->compositingState() == PaintsIntoOwnBacking || curr->compositin gState() == HasOwnBackingButPaintsIntoAncestor) 1701 if (curr->compositingState() == PaintsIntoOwnBacking)
1704 break; 1702 break;
1705 1703
1706 finalOpacity *= curr->renderer()->opacity(); 1704 finalOpacity *= curr->renderer()->opacity();
1707 } 1705 }
1708 1706
1709 return finalOpacity; 1707 return finalOpacity;
1710 } 1708 }
1711 1709
1712 Color CompositedLayerMapping::rendererBackgroundColor() const 1710 Color CompositedLayerMapping::rendererBackgroundColor() const
1713 { 1711 {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1758 continue; 1756 continue;
1759 if (curLayer->hasVisibleContent() || hasVisibleNonCompositingDescendant( curLayer)) 1757 if (curLayer->hasVisibleContent() || hasVisibleNonCompositingDescendant( curLayer))
1760 return true; 1758 return true;
1761 } 1759 }
1762 1760
1763 return false; 1761 return false;
1764 } 1762 }
1765 1763
1766 bool CompositedLayerMapping::containsPaintedContent() const 1764 bool CompositedLayerMapping::containsPaintedContent() const
1767 { 1765 {
1768 if (paintsIntoCompositedAncestor() || m_owningLayer.isReflection()) 1766 if (m_owningLayer.isReflection())
1769 return false; 1767 return false;
1770 1768
1771 if (renderer()->isImage() && isDirectlyCompositedImage()) 1769 if (renderer()->isImage() && isDirectlyCompositedImage())
1772 return false; 1770 return false;
1773 1771
1774 RenderObject* renderObject = renderer(); 1772 RenderObject* renderObject = renderer();
1775 // FIXME: we could optimize cases where the image, video or canvas is known to fill the border box entirely, 1773 // FIXME: we could optimize cases where the image, video or canvas is known to fill the border box entirely,
1776 // and set background color on the layer in that case, instead of allocating backing store and painting. 1774 // and set background color on the layer in that case, instead of allocating backing store and painting.
1777 if (renderObject->isVideo() && toRenderVideo(renderer())->shouldDisplayVideo ()) 1775 if (renderObject->isVideo() && toRenderVideo(renderer())->shouldDisplayVideo ())
1778 return m_owningLayer.hasBoxDecorationsOrBackground(); 1776 return m_owningLayer.hasBoxDecorationsOrBackground();
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 1943
1946 GraphicsLayer* CompositedLayerMapping::layerForChildrenTransform() const 1944 GraphicsLayer* CompositedLayerMapping::layerForChildrenTransform() const
1947 { 1945 {
1948 if (GraphicsLayer* clipLayer = clippingLayer()) 1946 if (GraphicsLayer* clipLayer = clippingLayer())
1949 return clipLayer; 1947 return clipLayer;
1950 if (m_scrollingLayer) 1948 if (m_scrollingLayer)
1951 return m_scrollingLayer.get(); 1949 return m_scrollingLayer.get();
1952 return m_childTransformLayer.get(); 1950 return m_childTransformLayer.get();
1953 } 1951 }
1954 1952
1955 bool CompositedLayerMapping::updateRequiresOwnBackingStoreForAncestorReasons(con st RenderLayer* compositingAncestorLayer)
1956 {
1957 unsigned previousRequiresOwnBackingStoreForAncestorReasons = m_requiresOwnBa ckingStoreForAncestorReasons;
1958 bool previousPaintsIntoCompositedAncestor = paintsIntoCompositedAncestor();
1959 bool canPaintIntoAncestor = compositingAncestorLayer
1960 && (compositingAncestorLayer->compositedLayerMapping()->mainGraphicsLaye r()->drawsContent()
1961 || compositingAncestorLayer->compositedLayerMapping()->paintsIntoCom positedAncestor());
1962
1963 m_requiresOwnBackingStoreForAncestorReasons = !canPaintIntoAncestor;
1964 if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor) {
1965 // Back out the change temporarily while invalidating with respect to th e old container.
1966 m_requiresOwnBackingStoreForAncestorReasons = !m_requiresOwnBackingStore ForAncestorReasons;
1967 compositor()->paintInvalidationOnCompositingChange(&m_owningLayer);
1968 m_requiresOwnBackingStoreForAncestorReasons = !m_requiresOwnBackingStore ForAncestorReasons;
1969 }
1970
1971 return m_requiresOwnBackingStoreForAncestorReasons != previousRequiresOwnBac kingStoreForAncestorReasons;
1972 }
1973
1974 bool CompositedLayerMapping::updateRequiresOwnBackingStoreForIntrinsicReasons()
1975 {
1976 unsigned previousRequiresOwnBackingStoreForIntrinsicReasons = m_requiresOwnB ackingStoreForIntrinsicReasons;
1977 bool previousPaintsIntoCompositedAncestor = paintsIntoCompositedAncestor();
1978 RenderObject* renderer = m_owningLayer.renderer();
1979 m_requiresOwnBackingStoreForIntrinsicReasons = m_owningLayer.isRootLayer()
1980 || (m_owningLayer.compositingReasons() & CompositingReasonComboReasonsTh atRequireOwnBacking)
1981 || m_owningLayer.transform()
1982 || m_owningLayer.clipsCompositingDescendantsWithBorderRadius() // FIXME: Revisit this if the paintsIntoCompositedAncestor state is removed.
1983 || renderer->isTransparent()
1984 || renderer->hasMask()
1985 || renderer->hasReflection()
1986 || renderer->hasFilter();
1987
1988 if (paintsIntoCompositedAncestor() != previousPaintsIntoCompositedAncestor) {
1989 // Back out the change temporarily while invalidating with respect to th e old container.
1990 m_requiresOwnBackingStoreForIntrinsicReasons = !m_requiresOwnBackingStor eForIntrinsicReasons;
1991 compositor()->paintInvalidationOnCompositingChange(&m_owningLayer);
1992 m_requiresOwnBackingStoreForIntrinsicReasons = !m_requiresOwnBackingStor eForIntrinsicReasons;
1993 }
1994
1995 return m_requiresOwnBackingStoreForIntrinsicReasons != previousRequiresOwnBa ckingStoreForIntrinsicReasons;
1996 }
1997
1998 void CompositedLayerMapping::setBlendMode(WebBlendMode blendMode) 1953 void CompositedLayerMapping::setBlendMode(WebBlendMode blendMode)
1999 { 1954 {
2000 if (m_ancestorClippingLayer) { 1955 if (m_ancestorClippingLayer) {
2001 m_ancestorClippingLayer->setBlendMode(blendMode); 1956 m_ancestorClippingLayer->setBlendMode(blendMode);
2002 m_graphicsLayer->setBlendMode(WebBlendModeNormal); 1957 m_graphicsLayer->setBlendMode(WebBlendModeNormal);
2003 } else { 1958 } else {
2004 m_graphicsLayer->setBlendMode(blendMode); 1959 m_graphicsLayer->setBlendMode(blendMode);
2005 } 1960 }
2006 } 1961 }
2007 1962
(...skipping 13 matching lines...) Expand all
2021 }; 1976 };
2022 1977
2023 void CompositedLayerMapping::setSquashingContentsNeedDisplay() 1978 void CompositedLayerMapping::setSquashingContentsNeedDisplay()
2024 { 1979 {
2025 ApplyToGraphicsLayers(this, SetContentsNeedsDisplayFunctor(), ApplyToSquashi ngLayer); 1980 ApplyToGraphicsLayers(this, SetContentsNeedsDisplayFunctor(), ApplyToSquashi ngLayer);
2026 } 1981 }
2027 1982
2028 void CompositedLayerMapping::setContentsNeedDisplay() 1983 void CompositedLayerMapping::setContentsNeedDisplay()
2029 { 1984 {
2030 // FIXME: need to split out paint invalidations for the background. 1985 // FIXME: need to split out paint invalidations for the background.
2031 ASSERT(!paintsIntoCompositedAncestor());
2032 ApplyToGraphicsLayers(this, SetContentsNeedsDisplayFunctor(), ApplyToContent Layers); 1986 ApplyToGraphicsLayers(this, SetContentsNeedsDisplayFunctor(), ApplyToContent Layers);
2033 } 1987 }
2034 1988
2035 struct SetContentsNeedsDisplayInRectFunctor { 1989 struct SetContentsNeedsDisplayInRectFunctor {
2036 void operator() (GraphicsLayer* layer) const 1990 void operator() (GraphicsLayer* layer) const
2037 { 1991 {
2038 if (layer->drawsContent()) { 1992 if (layer->drawsContent()) {
2039 IntRect layerDirtyRect = r; 1993 IntRect layerDirtyRect = r;
2040 layerDirtyRect.move(-layer->offsetFromRenderer()); 1994 layerDirtyRect.move(-layer->offsetFromRenderer());
2041 layer->setNeedsDisplayInRect(layerDirtyRect, invalidationReason); 1995 layer->setNeedsDisplayInRect(layerDirtyRect, invalidationReason);
2042 } 1996 }
2043 } 1997 }
2044 1998
2045 IntRect r; 1999 IntRect r;
2046 PaintInvalidationReason invalidationReason; 2000 PaintInvalidationReason invalidationReason;
2047 }; 2001 };
2048 2002
2049 // r is in the coordinate space of the layer's render object 2003 // r is in the coordinate space of the layer's render object
2050 void CompositedLayerMapping::setContentsNeedDisplayInRect(const LayoutRect& r, P aintInvalidationReason invalidationReason) 2004 void CompositedLayerMapping::setContentsNeedDisplayInRect(const LayoutRect& r, P aintInvalidationReason invalidationReason)
2051 { 2005 {
2052 // FIXME: need to split out paint invalidations for the background. 2006 // FIXME: need to split out paint invalidations for the background.
2053 ASSERT(!paintsIntoCompositedAncestor());
2054
2055 SetContentsNeedsDisplayInRectFunctor functor = { 2007 SetContentsNeedsDisplayInRectFunctor functor = {
2056 pixelSnappedIntRect(r.location() + m_owningLayer.subpixelAccumulation(), r.size()), 2008 pixelSnappedIntRect(r.location() + m_owningLayer.subpixelAccumulation(), r.size()),
2057 invalidationReason 2009 invalidationReason
2058 }; 2010 };
2059 ApplyToGraphicsLayers(this, functor, ApplyToContentLayers); 2011 ApplyToGraphicsLayers(this, functor, ApplyToContentLayers);
2060 } 2012 }
2061 2013
2062 const GraphicsLayerPaintInfo* CompositedLayerMapping::containingSquashedLayer(co nst RenderObject* renderObject, const Vector<GraphicsLayerPaintInfo>& layers, un signed maxSquashedLayerIndex) 2014 const GraphicsLayerPaintInfo* CompositedLayerMapping::containingSquashedLayer(co nst RenderObject* renderObject, const Vector<GraphicsLayerPaintInfo>& layers, un signed maxSquashedLayerIndex)
2063 { 2015 {
2064 for (size_t i = 0; i < layers.size() && i < maxSquashedLayerIndex; ++i) { 2016 for (size_t i = 0; i < layers.size() && i < maxSquashedLayerIndex; ++i) {
(...skipping 27 matching lines...) Expand all
2092 2044
2093 // Convert from ancestor to local coordinates. 2045 // Convert from ancestor to local coordinates.
2094 IntSize ancestorToLocalOffset = paintInfo.offsetFromRenderer - ancestorPaint Info->offsetFromRenderer; 2046 IntSize ancestorToLocalOffset = paintInfo.offsetFromRenderer - ancestorPaint Info->offsetFromRenderer;
2095 parentClipRect.move(ancestorToLocalOffset); 2047 parentClipRect.move(ancestorToLocalOffset);
2096 return parentClipRect; 2048 return parentClipRect;
2097 } 2049 }
2098 2050
2099 void CompositedLayerMapping::doPaintTask(const GraphicsLayerPaintInfo& paintInfo , const PaintLayerFlags& paintLayerFlags, GraphicsContext* context, 2051 void CompositedLayerMapping::doPaintTask(const GraphicsLayerPaintInfo& paintInfo , const PaintLayerFlags& paintLayerFlags, GraphicsContext* context,
2100 const IntRect& clip) // In the coords of rootLayer. 2052 const IntRect& clip) // In the coords of rootLayer.
2101 { 2053 {
2102 RELEASE_ASSERT(paintInfo.renderLayer->compositingState() == PaintsIntoGroupe dBacking || !paintsIntoCompositedAncestor());
2103
2104 FontCachePurgePreventer fontCachePurgePreventer; 2054 FontCachePurgePreventer fontCachePurgePreventer;
2105 2055
2106 // Note carefully: in theory it is appropriate to invoke context->save() her e 2056 // Note carefully: in theory it is appropriate to invoke context->save() her e
2107 // and restore the context after painting. For efficiency, we are assuming t hat 2057 // and restore the context after painting. For efficiency, we are assuming t hat
2108 // it is equivalent to manually undo this offset translation, which means we are 2058 // it is equivalent to manually undo this offset translation, which means we are
2109 // assuming that the context's space was not affected by the RenderLayer 2059 // assuming that the context's space was not affected by the RenderLayer
2110 // painting code. 2060 // painting code.
2111 2061
2112 IntSize offset = paintInfo.offsetFromRenderer; 2062 IntSize offset = paintInfo.offsetFromRenderer;
2113 context->translate(-offset.width(), -offset.height()); 2063 context->translate(-offset.width(), -offset.height());
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
2374 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { 2324 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) {
2375 name = "Scrolling Block Selection Layer"; 2325 name = "Scrolling Block Selection Layer";
2376 } else { 2326 } else {
2377 ASSERT_NOT_REACHED(); 2327 ASSERT_NOT_REACHED();
2378 } 2328 }
2379 2329
2380 return name; 2330 return name;
2381 } 2331 }
2382 2332
2383 } // namespace blink 2333 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698