diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2011-11-07 15:53:51 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-07 15:53:51 -0800 |
commit | 00d524fd5dc3e995e2b517da48e479694260ce2f (patch) | |
tree | 1f5980dea30a1412aedab84f560902467d08e06d /Source/WebCore | |
parent | 82ccbd8ce95211b4b5afad6a653462fd3beb771b (diff) | |
parent | 8852b0905b1a50ca045eb4bd19b2589aad663b5c (diff) | |
download | external_webkit-00d524fd5dc3e995e2b517da48e479694260ce2f.zip external_webkit-00d524fd5dc3e995e2b517da48e479694260ce2f.tar.gz external_webkit-00d524fd5dc3e995e2b517da48e479694260ce2f.tar.bz2 |
Merge "Change the default webView behavior to minimize the memory consumption" into ics-mr1
Diffstat (limited to 'Source/WebCore')
3 files changed, 20 insertions, 4 deletions
diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp index a44a743..5f48773 100644 --- a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp +++ b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp @@ -308,8 +308,10 @@ void GLWebViewState::setViewport(SkRect& viewport, float scale) // allocate max possible number of tiles visible with this viewport int viewMaxTileX = static_cast<int>(ceilf((viewport.width()-1) * invTileContentWidth)) + 1; int viewMaxTileY = static_cast<int>(ceilf((viewport.height()-1) * invTileContentHeight)) + 1; - int maxTextureCount = (viewMaxTileX + TILE_PREFETCH_DISTANCE * 2) * - (viewMaxTileY + TILE_PREFETCH_DISTANCE * 2) * 2; + + int maxTextureCount = (viewMaxTileX + m_expandedTileBoundsX * 2) * + (viewMaxTileY + m_expandedTileBoundsY * 2) * 2; + TilesManager::instance()->setMaxTextureCount(maxTextureCount); m_tiledPageA->updateBaseTileSize(); m_tiledPageB->updateBaseTileSize(); @@ -425,8 +427,9 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, IntRect* invalRect, float viewWidth = (viewport.fRight - viewport.fLeft) * TILE_PREFETCH_RATIO; float viewHeight = (viewport.fBottom - viewport.fTop) * TILE_PREFETCH_RATIO; - bool useHorzPrefetch = viewWidth < baseContentWidth(); - bool useVertPrefetch = viewHeight < baseContentHeight(); + bool useMinimalMemory = TilesManager::instance()->useMinimalMemory(); + bool useHorzPrefetch = useMinimalMemory ? 0 : viewWidth < baseContentWidth(); + bool useVertPrefetch = useMinimalMemory ? 0 : viewHeight < baseContentHeight(); m_expandedTileBoundsX = (useHorzPrefetch) ? TILE_PREFETCH_DISTANCE : 0; m_expandedTileBoundsY = (useVertPrefetch) ? TILE_PREFETCH_DISTANCE : 0; diff --git a/Source/WebCore/platform/graphics/android/TilesManager.cpp b/Source/WebCore/platform/graphics/android/TilesManager.cpp index d36017f..acfe9e7 100644 --- a/Source/WebCore/platform/graphics/android/TilesManager.cpp +++ b/Source/WebCore/platform/graphics/android/TilesManager.cpp @@ -99,6 +99,7 @@ TilesManager::TilesManager() , m_showVisualIndicator(false) , m_invertedScreen(false) , m_invertedScreenSwitch(false) + , m_useMinimalMemory(true) , m_drawGLCount(1) { XLOG("TilesManager ctor"); diff --git a/Source/WebCore/platform/graphics/android/TilesManager.h b/Source/WebCore/platform/graphics/android/TilesManager.h index 4daecff..8ae9202 100644 --- a/Source/WebCore/platform/graphics/android/TilesManager.h +++ b/Source/WebCore/platform/graphics/android/TilesManager.h @@ -170,6 +170,16 @@ public: m_shader.setContrast(contrast); } + void setUseMinimalMemory(bool useMinimalMemory) + { + m_useMinimalMemory = useMinimalMemory; + } + + bool useMinimalMemory() + { + return m_useMinimalMemory; + } + void incDrawGLCount() { m_drawGLCount++; @@ -207,6 +217,8 @@ private: bool m_invertedScreen; bool m_invertedScreenSwitch; + bool m_useMinimalMemory; + sp<TexturesGenerator> m_pixmapsGenerationThread; android::Mutex m_texturesLock; |