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

Issue 10342008: Revert 114283 - Avoid using backing store for compositing layers that just need to clip (Closed)

Created:
8 years, 7 months ago by karen
Modified:
8 years, 7 months ago
Reviewers:
simon.fraser
CC:
chromium-reviews
Base URL:
http://svn.webkit.org/repository/webkit/branches/chromium/1123/
Visibility:
Public.

Description

Revert 114283 - Avoid using backing store for compositing layers that just need to clip https://bugs.webkit.org/show_bug.cgi?id=40547 Source/WebCore: Reviewed by Dean Jackson. If a layer becomes composited because it needs to clip composited descendants, or if it has perspective, then it doesn't actually needs its own backing store; its contents can be painted by an ancestor, and we can just have an empty layer that does the clipping or applies the perspective transform. This saves backing store memory on some pages. Tests: compositing/backing/no-backing-for-clip-overlap.html compositing/backing/no-backing-for-clip.html compositing/backing/no-backing-for-perspective.html * rendering/RenderLayer.cpp: (WebCore): (WebCore::RenderLayer::enclosingCompositingLayerForRepaint): (WebCore::RenderLayer::paintLayer): * rendering/RenderLayer.h: (RenderLayer): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::RenderLayerBacking): (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry): (WebCore::RenderLayerBacking::containsPaintedContent): (WebCore::RenderLayerBacking::setContentsNeedDisplay): (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect): (WebCore::RenderLayerBacking::paintIntoLayer): * rendering/RenderLayerBacking.h: (RenderLayerBacking): (WebCore::RenderLayerBacking::paintsIntoCompositedAncestor): (WebCore::RenderLayerBacking::setRequiresOwnBackingStore): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::layerWillBeRemoved): (WebCore::RenderLayerCompositor::recursiveRepaintLayerRect): (WebCore::RenderLayerCompositor::requiresCompositingLayer): (WebCore::RenderLayerCompositor::requiresOwnBackingStore): (WebCore): * rendering/RenderLayerCompositor.h: * rendering/RenderObject.cpp: (WebCore::RenderObject::containerForRepaint): * rendering/RenderTreeAsText.cpp: (WebCore::write): * rendering/RenderView.cpp: (WebCore::RenderView::paintBoxDecorations): LayoutTests: Reviewed by Dean Jackson. New tests for backing store elimination with clip or perspective. New results for some tests that no longer have backing store on some layers. * compositing/backing/no-backing-for-clip-expected.txt: Added. * compositing/backing/no-backing-for-clip-overlap-expected.txt: Added. * compositing/backing/no-backing-for-clip-overlap.html: Added. * compositing/backing/no-backing-for-clip.html: Added. * compositing/backing/no-backing-for-perspective-expected.txt: Added. * compositing/backing/no-backing-for-perspective.html: Added. * compositing/geometry/preserve-3d-switching-expected.txt: * compositing/visibility/layer-visible-content-expected.png: * compositing/visibility/layer-visible-content-expected.txt: TBR=simon.fraser@apple.com Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=115914

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+19 lines, -76 lines) Patch
M LayoutTests/compositing/geometry/preserve-3d-switching-expected.txt View 1 chunk +1 line, -0 lines 0 comments Download
M LayoutTests/compositing/visibility/layer-visible-content-expected.png View Binary file 0 comments Download
M LayoutTests/compositing/visibility/layer-visible-content-expected.txt View 1 chunk +1 line, -0 lines 0 comments Download
M Source/WebCore/rendering/RenderLayer.h View 1 chunk +0 lines, -1 line 0 comments Download
M Source/WebCore/rendering/RenderLayer.cpp View 2 chunks +1 line, -14 lines 0 comments Download
M Source/WebCore/rendering/RenderLayerBacking.h View 2 chunks +0 lines, -7 lines 0 comments Download
M Source/WebCore/rendering/RenderLayerBacking.cpp View 6 chunks +2 lines, -11 lines 0 comments Download
M Source/WebCore/rendering/RenderLayerCompositor.h View 1 chunk +0 lines, -3 lines 0 comments Download
M Source/WebCore/rendering/RenderLayerCompositor.cpp View 4 chunks +11 lines, -37 lines 0 comments Download
M Source/WebCore/rendering/RenderObject.cpp View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderTreeAsText.cpp View 1 chunk +1 line, -1 line 0 comments Download
M Source/WebCore/rendering/RenderView.cpp View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 2 (0 generated)
karen
8 years, 7 months ago (2012-05-03 00:10:50 UTC) #1
simon.fraser_apple.com
8 years, 7 months ago (2012-05-03 00:12:41 UTC) #2
I don't really want to get this email, but I'm curious about why it's being
reverted. Did it cause regressions that are not filed in bugs.webkit.org?

Simon

On May 2, 2012, at 5:10 PM, karen@chromium.org wrote:

> Reviewers: simon.fraser_apple.com,
> 
> Description:
> Revert 114283 - Avoid using backing store for compositing layers that just
need
> to clip
> https://bugs.webkit.org/show_bug.cgi?id=40547
> 
> Source/WebCore:
> 
> Reviewed by Dean Jackson.
> 
> If a layer becomes composited because it needs to clip composited
> descendants, or if it has perspective, then it doesn't actually
> needs its own backing store; its contents can be painted by an
> ancestor, and we can just have an empty layer that does the clipping
> or applies the perspective transform.
> 
> This saves backing store memory on some pages.
> 
> Tests: compositing/backing/no-backing-for-clip-overlap.html
>       compositing/backing/no-backing-for-clip.html
>       compositing/backing/no-backing-for-perspective.html
> 
> * rendering/RenderLayer.cpp:
> (WebCore):
> (WebCore::RenderLayer::enclosingCompositingLayerForRepaint):
> (WebCore::RenderLayer::paintLayer):
> * rendering/RenderLayer.h:
> (RenderLayer):
> * rendering/RenderLayerBacking.cpp:
> (WebCore::RenderLayerBacking::RenderLayerBacking):
> (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
> (WebCore::RenderLayerBacking::containsPaintedContent):
> (WebCore::RenderLayerBacking::setContentsNeedDisplay):
> (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
> (WebCore::RenderLayerBacking::paintIntoLayer):
> * rendering/RenderLayerBacking.h:
> (RenderLayerBacking):
> (WebCore::RenderLayerBacking::paintsIntoCompositedAncestor):
> (WebCore::RenderLayerBacking::setRequiresOwnBackingStore):
> * rendering/RenderLayerCompositor.cpp:
> (WebCore::RenderLayerCompositor::layerWillBeRemoved):
> (WebCore::RenderLayerCompositor::recursiveRepaintLayerRect):
> (WebCore::RenderLayerCompositor::requiresCompositingLayer):
> (WebCore::RenderLayerCompositor::requiresOwnBackingStore):
> (WebCore):
> * rendering/RenderLayerCompositor.h:
> * rendering/RenderObject.cpp:
> (WebCore::RenderObject::containerForRepaint):
> * rendering/RenderTreeAsText.cpp:
> (WebCore::write):
> * rendering/RenderView.cpp:
> (WebCore::RenderView::paintBoxDecorations):
> 
> LayoutTests:
> 
> Reviewed by Dean Jackson.
> 
> New tests for backing store elimination with clip or perspective.
> 
> New results for some tests that no longer have backing store on some
> layers.
> 
> * compositing/backing/no-backing-for-clip-expected.txt: Added.
> * compositing/backing/no-backing-for-clip-overlap-expected.txt: Added.
> * compositing/backing/no-backing-for-clip-overlap.html: Added.
> * compositing/backing/no-backing-for-clip.html: Added.
> * compositing/backing/no-backing-for-perspective-expected.txt: Added.
> * compositing/backing/no-backing-for-perspective.html: Added.
> * compositing/geometry/preserve-3d-switching-expected.txt:
> * compositing/visibility/layer-visible-content-expected.png:
> * compositing/visibility/layer-visible-content-expected.txt:
> 
> TBR=simon.fraser@apple.com
> 
> Please review this at https://chromiumcodereview.appspot.com/10342008/
> 
> SVN Base: http://svn.webkit.org/repository/webkit/branches/chromium/1123/
> 
> Affected files:
>  M     LayoutTests/compositing/geometry/preserve-3d-switching-expected.txt
>  M     LayoutTests/compositing/visibility/layer-visible-content-expected.png
>  M     LayoutTests/compositing/visibility/layer-visible-content-expected.txt
>  M     Source/WebCore/rendering/RenderLayer.h
>  M     Source/WebCore/rendering/RenderLayer.cpp
>  M     Source/WebCore/rendering/RenderLayerBacking.h
>  M     Source/WebCore/rendering/RenderLayerBacking.cpp
>  M     Source/WebCore/rendering/RenderLayerCompositor.h
>  M     Source/WebCore/rendering/RenderLayerCompositor.cpp
>  M     Source/WebCore/rendering/RenderObject.cpp
>  M     Source/WebCore/rendering/RenderTreeAsText.cpp
>  M     Source/WebCore/rendering/RenderView.cpp
> 
> 
> Index: LayoutTests/compositing/geometry/preserve-3d-switching-expected.txt
> ===================================================================
> ---
LayoutTests/compositing/geometry/preserve-3d-switching-expected.txt	(revision
115913)
> +++
LayoutTests/compositing/geometry/preserve-3d-switching-expected.txt	(working
copy)
> @@ -10,6 +10,7 @@
>         (GraphicsLayer
>           (position 108.00 73.00)
>           (bounds 304.00 304.00)
> +          (drawsContent 1)
>           (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00
0.00 1.00 -0.00] [0.00 0.00 0.00 1.00])
>           (children 1
>             (GraphicsLayer
> Index: LayoutTests/compositing/visibility/layer-visible-content-expected.png
> ===================================================================
> Cannot display: file marked as a binary type.
> svn:mime-type = image/png
> Index: LayoutTests/compositing/visibility/layer-visible-content-expected.txt
> ===================================================================
> ---
LayoutTests/compositing/visibility/layer-visible-content-expected.txt	(revision
115913)
> +++
LayoutTests/compositing/visibility/layer-visible-content-expected.txt	(working
copy)
> @@ -6,6 +6,7 @@
>       (children 2
>         (GraphicsLayer
>           (bounds 200.00 200.00)
> +          (drawsContent 1)
>           (children 1
>             (GraphicsLayer
>               (bounds 200.00 200.00)
> Index: Source/WebCore/rendering/RenderLayer.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderLayer.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayer.cpp	(working copy)
> @@ -960,19 +960,6 @@
> 
>     return 0;
> }
> -
> -RenderLayer* RenderLayer::enclosingCompositingLayerForRepaint(bool
includeSelf) const
> -{
> -    if (includeSelf && isComposited() &&
!backing()->paintsIntoCompositedAncestor())
> -        return const_cast<RenderLayer*>(this);
> -
> -    for (const RenderLayer* curr = compositingContainer(this); curr; curr =
compositingContainer(curr)) {
> -        if (curr->isComposited() &&
!curr->backing()->paintsIntoCompositedAncestor())
> -            return const_cast<RenderLayer*>(curr);
> -    }
> -
> -    return 0;
> -}
> #endif
> 
> #if ENABLE(CSS_FILTERS)
> @@ -2886,7 +2873,7 @@
>         // but we need to ensure that we don't cache clip rects computed with
the wrong root in this case.
>         if (context->updatingControlTints() || (paintBehavior &
PaintBehaviorFlattenCompositingLayers))
>             paintFlags |= PaintLayerTemporaryClipRects;
> -        else if (!backing()->paintsIntoWindow() &&
!backing()->paintsIntoCompositedAncestor() && !shouldDoSoftwarePaint(this,
paintFlags & PaintLayerPaintingReflection)) {
> +        else if (!backing()->paintsIntoWindow() &&
!shouldDoSoftwarePaint(this, paintFlags & PaintLayerPaintingReflection)) {
>             // If this RenderLayer should paint into its backing, that will be
done via RenderLayerBacking::paintIntoLayer().
>             return;
>         }
> Index: Source/WebCore/rendering/RenderLayer.h
> ===================================================================
> --- Source/WebCore/rendering/RenderLayer.h	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayer.h	(working copy)
> @@ -413,7 +413,6 @@
> #if USE(ACCELERATED_COMPOSITING)
>     // Enclosing compositing layer; if includeSelf is true, may return this.
>     RenderLayer* enclosingCompositingLayer(bool includeSelf = true) const;
> -    RenderLayer* enclosingCompositingLayerForRepaint(bool includeSelf = true)
const;
>     // Ancestor compositing layer, excluding this.
>     RenderLayer* ancestorCompositingLayer() const { return
enclosingCompositingLayer(false); }
> #endif
> Index: Source/WebCore/rendering/RenderLayerBacking.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderLayerBacking.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayerBacking.cpp	(working copy)
> @@ -92,7 +92,6 @@
>     , m_artificiallyInflatedBounds(false)
>     , m_isMainFrameRenderViewLayer(false)
>     , m_usingTiledCacheLayer(false)
> -    , m_requiresOwnBackingStore(true)
> #if ENABLE(CSS_FILTERS)
>     , m_canCompositeFilters(false)
> #endif
> @@ -566,10 +565,6 @@
>     }
> 
>     m_graphicsLayer->setContentsRect(contentsBox());
> -
> -    // If this layer was created just for clipping or to apply perspective,
it doesn't need its own backing store.
> -   
setRequiresOwnBackingStore(compositor()->requiresOwnBackingStore(m_owningLayer,
compAncestor));
> -
>     updateDrawsContent();
>     updateAfterWidgetResize();
> }
> @@ -949,7 +944,7 @@
> 
> bool RenderLayerBacking::containsPaintedContent() const
> {
> -    if (isSimpleContainerCompositingLayer() || paintsIntoWindow() ||
paintsIntoCompositedAncestor() || m_artificiallyInflatedBounds ||
m_owningLayer->isReflection())
> +    if (isSimpleContainerCompositingLayer() || paintsIntoWindow() ||
m_artificiallyInflatedBounds || m_owningLayer->isReflection())
>         return false;
> 
>     if (isDirectlyCompositedImage())
> @@ -1107,8 +1102,6 @@
> 
> void RenderLayerBacking::setContentsNeedDisplay()
> {
> -    ASSERT(!paintsIntoCompositedAncestor());
> -
>     if (m_graphicsLayer && m_graphicsLayer->drawsContent())
>         m_graphicsLayer->setNeedsDisplay();
> 
> @@ -1122,8 +1115,6 @@
> // r is in the coordinate space of the layer's render object
> void RenderLayerBacking::setContentsNeedDisplayInRect(const IntRect& r)
> {
> -    ASSERT(!paintsIntoCompositedAncestor());
> -
>     if (m_graphicsLayer && m_graphicsLayer->drawsContent()) {
>         IntRect layerDirtyRect = r;
>         layerDirtyRect.move(-m_graphicsLayer->offsetFromRenderer());
> @@ -1148,7 +1139,7 @@
>                     PaintBehavior paintBehavior, GraphicsLayerPaintingPhase
paintingPhase,
>                     RenderObject* paintingRoot)
> {
> -    if (paintsIntoWindow() || paintsIntoCompositedAncestor()) {
> +    if (paintsIntoWindow()) {
>         ASSERT_NOT_REACHED();
>         return;
>     }
> Index: Source/WebCore/rendering/RenderLayerBacking.h
> ===================================================================
> --- Source/WebCore/rendering/RenderLayerBacking.h	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayerBacking.h	(working copy)
> @@ -96,13 +96,7 @@
>     // This returns false for other layers, and when the document layer
actually needs to paint into its backing store
>     // for some reason.
>     bool paintsIntoWindow() const;
> -
> -    // Returns true for a composited layer that has no backing store of its
own, so
> -    // paints into some ancestor layer.
> -    bool paintsIntoCompositedAncestor() const { return
!m_requiresOwnBackingStore; }
> 
> -    void setRequiresOwnBackingStore(bool flag) { m_requiresOwnBackingStore =
flag; }
> -
>     void setContentsNeedDisplay();
>     // r is in the coordinate space of the layer's render object
>     void setContentsNeedDisplayInRect(const IntRect&);
> @@ -242,7 +236,6 @@
>     bool m_artificiallyInflatedBounds;      // bounds had to be made non-zero
to make transform-origin work
>     bool m_isMainFrameRenderViewLayer;
>     bool m_usingTiledCacheLayer;
> -    bool m_requiresOwnBackingStore;
> #if ENABLE(CSS_FILTERS)
>     bool m_canCompositeFilters;
> #endif
> Index: Source/WebCore/rendering/RenderLayerCompositor.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderLayerCompositor.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayerCompositor.cpp	(working copy)
> @@ -584,7 +584,7 @@
> 
>     setCompositingParent(child, 0);
> 
> -    RenderLayer* compLayer = parent->enclosingCompositingLayerForRepaint();
> +    RenderLayer* compLayer = parent->enclosingCompositingLayer();
>     if (compLayer) {
>         ASSERT(compLayer->backing());
>         LayoutRect compBounds = child->backing()->compositedBounds();
> @@ -1203,7 +1203,7 @@
> void RenderLayerCompositor::recursiveRepaintLayerRect(RenderLayer* layer,
const IntRect& rect)
> {
>     // FIXME: This method does not work correctly with transforms.
> -    if (layer->isComposited() &&
!layer->backing()->paintsIntoCompositedAncestor())
> +    if (layer->isComposited())
>         layer->setBackingNeedsRepaintInRect(rect);
> 
> #if !ASSERT_DISABLED
> @@ -1398,15 +1398,15 @@
>     }
>     // The root layer always has a compositing layer, but it may not have
backing.
>     return requiresCompositingForTransform(renderer)
> -        || requiresCompositingForVideo(renderer)
> -        || requiresCompositingForCanvas(renderer)
> -        || requiresCompositingForPlugin(renderer)
> -        || requiresCompositingForFrame(renderer)
> -        || (canRender3DTransforms() &&
renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden)
> -        || clipsCompositingDescendants(layer)
> -        || requiresCompositingForAnimation(renderer)
> -        || requiresCompositingForFilters(renderer)
> -        || requiresCompositingForPosition(renderer, layer);
> +             || requiresCompositingForVideo(renderer)
> +             || requiresCompositingForCanvas(renderer)
> +             || requiresCompositingForPlugin(renderer)
> +             || requiresCompositingForFrame(renderer)
> +             || (canRender3DTransforms() &&
renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden)
> +             || clipsCompositingDescendants(layer)
> +             || requiresCompositingForAnimation(renderer)
> +             || requiresCompositingForFilters(renderer)
> +             || requiresCompositingForPosition(renderer, layer);
> }
> 
> bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const
> @@ -1414,32 +1414,6 @@
>     return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer();
> }
> 
> -bool RenderLayerCompositor::requiresOwnBackingStore(const RenderLayer* layer,
const RenderLayer* compositingAncestorLayer) const
> -{
> -    RenderObject* renderer = layer->renderer();
> -    if (compositingAncestorLayer
> -        &&
!(compositingAncestorLayer->backing()->graphicsLayer()->drawsContent()
> -            || compositingAncestorLayer->backing()->paintsIntoWindow()
> -            ||
compositingAncestorLayer->backing()->paintsIntoCompositedAncestor()))
> -        return true;
> -
> -    return layer->isRootLayer()
> -        || layer->transform() // note: excludes perspective and
transformStyle3D.
> -        || requiresCompositingForVideo(renderer)
> -        || requiresCompositingForCanvas(renderer)
> -        || requiresCompositingForPlugin(renderer)
> -        || requiresCompositingForFrame(renderer)
> -        || (canRender3DTransforms() &&
renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden)
> -        || requiresCompositingForAnimation(renderer)
> -        || requiresCompositingForFilters(renderer)
> -        || requiresCompositingForPosition(renderer, layer)
> -        || renderer->isTransparent()
> -        || renderer->hasMask()
> -        || renderer->hasReflection()
> -        || renderer->hasFilter()
> -        || layer->mustOverlapCompositedLayers();
> -}
> -
> #if !LOG_DISABLED
> const char* RenderLayerCompositor::reasonForCompositing(const RenderLayer*
layer)
> {
> Index: Source/WebCore/rendering/RenderLayerCompositor.h
> ===================================================================
> --- Source/WebCore/rendering/RenderLayerCompositor.h	(revision 115913)
> +++ Source/WebCore/rendering/RenderLayerCompositor.h	(working copy)
> @@ -135,9 +135,6 @@
>     // Repaint parts of all composited layers that intersect the given
absolute rectangle.
>     void repaintCompositedLayersAbsoluteRect(const IntRect&);
> 
> -    // Returns true if the given layer needs it own backing store.
> -    bool requiresOwnBackingStore(const RenderLayer*, const RenderLayer*
compositingAncestorLayer) const;
> -
>     RenderLayer* rootRenderLayer() const;
>     GraphicsLayer* rootGraphicsLayer() const;
>     GraphicsLayer* scrollLayer() const;
> Index: Source/WebCore/rendering/RenderObject.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderObject.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderObject.cpp	(working copy)
> @@ -1255,7 +1255,7 @@
> 
> #if USE(ACCELERATED_COMPOSITING)
>     if (v->usesCompositing()) {
> -        RenderLayer* compLayer =
enclosingLayer()->enclosingCompositingLayerForRepaint();
> +        RenderLayer* compLayer =
enclosingLayer()->enclosingCompositingLayer();
>         if (compLayer)
>             repaintContainer = compLayer->renderer();
>     }
> Index: Source/WebCore/rendering/RenderTreeAsText.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderTreeAsText.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderTreeAsText.cpp	(working copy)
> @@ -631,7 +631,7 @@
> #if USE(ACCELERATED_COMPOSITING)
>     if (behavior & RenderAsTextShowCompositedLayers) {
>         if (l.isComposited())
> -            ts << " (composited, bounds=" << l.backing()->compositedBounds()
<< ", drawsContent=" << l.backing()->graphicsLayer()->drawsContent() << ",
paints into ancestor=" << l.backing()->paintsIntoCompositedAncestor() << ")";
> +            ts << " (composited, bounds " << l.backing()->compositedBounds()
<< ")";
>     }
> #else
>     UNUSED_PARAM(behavior);
> Index: Source/WebCore/rendering/RenderView.cpp
> ===================================================================
> --- Source/WebCore/rendering/RenderView.cpp	(revision 115913)
> +++ Source/WebCore/rendering/RenderView.cpp	(working copy)
> @@ -255,7 +255,7 @@
>         }
> 
> #if USE(ACCELERATED_COMPOSITING)
> -        if (RenderLayer* compositingLayer =
layer->enclosingCompositingLayerForRepaint()) {
> +        if (RenderLayer* compositingLayer =
layer->enclosingCompositingLayer()) {
>             if (!compositingLayer->backing()->paintsIntoWindow()) {
>                 frameView()->setCannotBlitToWindow();
>                 break;
> 
> 

Powered by Google App Engine
This is Rietveld 408576698