diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-08-12 09:27:39 +0200 |
commit | 3749d61e1f7a59f5ec5067e560af1eb610c82015 (patch) | |
tree | 73dc228333948738bbe02976cacca8cd382bc978 /Source/WebCore/rendering/RenderLayerBacking.cpp | |
parent | b32b4dcd9a51ab8de6afc53d9e17f8707e1f7a5e (diff) | |
download | qtwebkit-3749d61e1f7a59f5ec5067e560af1eb610c82015.tar.gz |
Imported WebKit commit a77350243e054f3460d1137301d8b3faee3d2052 (http://svn.webkit.org/repository/webkit/trunk@125365)
New snapshot with build fixes for latest API changes in Qt and all WK1 Win MSVC fixes upstream
Diffstat (limited to 'Source/WebCore/rendering/RenderLayerBacking.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderLayerBacking.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/Source/WebCore/rendering/RenderLayerBacking.cpp b/Source/WebCore/rendering/RenderLayerBacking.cpp index 57b83e352..415891731 100644 --- a/Source/WebCore/rendering/RenderLayerBacking.cpp +++ b/Source/WebCore/rendering/RenderLayerBacking.cpp @@ -52,6 +52,7 @@ #include "RenderVideo.h" #include "RenderView.h" #include "ScrollingCoordinator.h" +#include "Settings.h" #include "StyleResolver.h" #include "TiledBacking.h" @@ -121,8 +122,11 @@ RenderLayerBacking::RenderLayerBacking(RenderLayer* layer) if (m_usingTiledCacheLayer) { if (Page* page = renderer()->frame()->page()) { if (TiledBacking* tiledBacking = m_graphicsLayer->tiledBacking()) { + Frame* frame = renderer()->frame(); + tiledBacking->setIsInWindow(page->isOnscreen()); - tiledBacking->setCanHaveScrollbars(renderer()->frame()->view()->canHaveScrollbars()); + tiledBacking->setCanHaveScrollbars(frame->view()->canHaveScrollbars()); + tiledBacking->setScrollingPerformanceLoggingEnabled(frame->settings() && frame->settings()->scrollingPerformanceLoggingEnabled()); } } } @@ -895,16 +899,23 @@ bool RenderLayerBacking::paintsChildren() const return false; } +static bool isCompositedPlugin(RenderObject* renderer) +{ + return renderer->isEmbeddedObject() && toRenderEmbeddedObject(renderer)->allowsAcceleratedCompositing(); +} + // A "simple container layer" is a RenderLayer which has no visible content to render. // It may have no children, or all its children may be themselves composited. // This is a useful optimization, because it allows us to avoid allocating backing store. bool RenderLayerBacking::isSimpleContainerCompositingLayer() const { RenderObject* renderObject = renderer(); - if (renderObject->isReplaced() || // replaced objects are not containers - renderObject->hasMask()) // masks require special treatment + if (renderObject->hasMask()) // masks require special treatment return false; + if (renderObject->isReplaced() && !isCompositedPlugin(renderObject)) + return false; + if (paintsBoxDecorations() || paintsChildren()) return false; @@ -1619,6 +1630,20 @@ double RenderLayerBacking::backingStoreMemoryEstimate() const return backingMemory; } +#if PLATFORM(BLACKBERRY) +bool RenderLayerBacking::contentsVisible(const GraphicsLayer*, const IntRect& localContentRect) const +{ + Frame* frame = renderer()->frame(); + FrameView* view = frame ? frame->view() : 0; + if (!view) + return false; + + IntRect visibleContentRect(view->visibleContentRect()); + FloatQuad absoluteContentQuad = renderer()->localToAbsoluteQuad(FloatRect(localContentRect)); + return absoluteContentQuad.enclosingBoundingBox().intersects(visibleContentRect); +} +#endif + } // namespace WebCore #endif // USE(ACCELERATED_COMPOSITING) |