summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2011-12-13 15:44:47 -0800
committerChris Craik <ccraik@google.com>2011-12-13 16:11:55 -0800
commita969a4b7c7343825c2af947efd6f77da464b9d28 (patch)
tree3a41d921fc8035e4251f0d05ba1b66946554ed29 /Source/WebCore/platform/graphics/android/GLWebViewState.cpp
parentcc6205ef9a3d8f7e2710d5db536cc7c7fc7836a0 (diff)
downloadexternal_webkit-a969a4b7c7343825c2af947efd6f77da464b9d28.zip
external_webkit-a969a4b7c7343825c2af947efd6f77da464b9d28.tar.gz
external_webkit-a969a4b7c7343825c2af947efd6f77da464b9d28.tar.bz2
When in singlesurfacemode, resist switching out
bug:5660814 We want to avoid swapping in and out of singlesurface mode when we have enough textures to hold the content, but not while the content is updating. Change-Id: Ic64aa4b2d3e73addec6a5881d32fbc25e1ce9c6f
Diffstat (limited to 'Source/WebCore/platform/graphics/android/GLWebViewState.cpp')
-rw-r--r--Source/WebCore/platform/graphics/android/GLWebViewState.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
index 710ae25..76bd923 100644
--- a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
+++ b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
@@ -140,6 +140,7 @@ void GLWebViewState::setBaseLayer(BaseLayerAndroid* layer, const SkRegion& inval
// TODO: move this into TreeManager
m_tiledPageA->discardTextures();
m_tiledPageB->discardTextures();
+ m_layersRenderingMode = kAllTextures;
}
if (layer) {
XLOG("new base layer %p, (inval region empty %d) with child %p", layer, inval.isEmpty(), layer->getChild(0));
@@ -389,6 +390,12 @@ bool GLWebViewState::setLayersRenderingMode(TexturesResult& nbTexturesNeeded)
int maxTextures = TilesManager::instance()->maxLayerTextureCount();
LayersRenderingMode layersRenderingMode = m_layersRenderingMode;
+ if (m_layersRenderingMode == kSingleSurfaceRendering) {
+ // only switch out of SingleSurface mode, if we have 2x needed textures
+ // to avoid changing too often
+ maxTextures /= 2;
+ }
+
m_layersRenderingMode = kSingleSurfaceRendering;
if (nbTexturesNeeded.fixed < maxTextures)
m_layersRenderingMode = kFixedLayers;