From e87984118d573b7e6eea5547eaa43ea98bbf5447 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Mon, 17 Oct 2011 14:29:04 -0700 Subject: Don't paint/allocate off screen tiles bug:5320471 Also, reduce prefetch distance Change-Id: I9e677c16b5d0cdc16b87bd820591088ab10ab44b --- .../WebCore/platform/graphics/android/BaseLayerAndroid.cpp | 4 ++-- Source/WebCore/platform/graphics/android/TiledPage.cpp | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'Source/WebCore/platform/graphics/android') diff --git a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp index 827c858..a8c4d7a 100644 --- a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp @@ -57,8 +57,8 @@ // TODO: dynamically determine based on DPI #define PREFETCH_SCALE_MODIFIER 0.3 #define PREFETCH_OPACITY 1 -#define PREFETCH_X_DIST 1 -#define PREFETCH_Y_DIST 2 +#define PREFETCH_X_DIST 0 +#define PREFETCH_Y_DIST 1 namespace WebCore { diff --git a/Source/WebCore/platform/graphics/android/TiledPage.cpp b/Source/WebCore/platform/graphics/android/TiledPage.cpp index 34f0d4e..b3b4daf 100644 --- a/Source/WebCore/platform/graphics/android/TiledPage.cpp +++ b/Source/WebCore/platform/graphics/android/TiledPage.cpp @@ -142,9 +142,6 @@ void TiledPage::invalidateRect(const IntRect& inval, const unsigned int pictureC void TiledPage::prepareRow(bool goingLeft, int tilesInRow, int firstTileX, int y, const SkIRect& tileBounds) { - if (y < 0) - return; - for (int i = 0; i < tilesInRow; i++) { int x = firstTileX; @@ -156,9 +153,6 @@ void TiledPage::prepareRow(bool goingLeft, int tilesInRow, int firstTileX, int y else x += i; - if (x < 0) - continue; - BaseTile* currentTile = 0; BaseTile* availableTile = 0; for (int j = 0; j < m_baseTileSize; j++) { @@ -269,6 +263,14 @@ void TiledPage::prepare(bool goingDown, bool goingLeft, const SkIRect& tileBound nbTilesHeight += expandY * 2; } + // crop the prepared region to the contents of the base layer + float maxWidthTiles = m_glWebViewState->baseContentWidth() * m_scale / TilesManager::tileWidth(); + float maxHeightTiles = m_glWebViewState->baseContentHeight() * m_scale / TilesManager::tileHeight(); + firstTileX = std::max(0, firstTileX); + firstTileY = std::max(0, firstTileY); + lastTileX = std::min(lastTileX, static_cast(ceilf(maxWidthTiles)) - 1); + lastTileY = std::min(lastTileY, static_cast(ceilf(maxHeightTiles)) - 1); + m_expandedTileBounds.fLeft = firstTileX; m_expandedTileBounds.fTop = firstTileY; m_expandedTileBounds.fRight = lastTileX; -- cgit v1.1