summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-03-23 18:02:27 -0700
committerJohn Reck <jreck@google.com>2011-05-05 14:31:39 -0700
commit0c23c9caf76a37515b4911e84606ad36a43cd74e (patch)
treee31a62e03fef93e8200624adb31a2b11c037711c /WebCore/platform/graphics/android/BaseLayerAndroid.cpp
parent2d60bef786645e5b9e2da0e8374d3f06a40d0638 (diff)
downloadexternal_webkit-0c23c9caf76a37515b4911e84606ad36a43cd74e.zip
external_webkit-0c23c9caf76a37515b4911e84606ad36a43cd74e.tar.gz
external_webkit-0c23c9caf76a37515b4911e84606ad36a43cd74e.tar.bz2
DO NOT MERGE priority queue based tile manager
Removes TileSets and queues tiles individually Uses a priority queue to determine which tiles to render first Stops rendering the front tile page if we are prepping the back one Limits queue spam by tracking which tiles are already in the queue Change-Id: Idd4154b8a2771d0db2da94c84a683314597f8542
Diffstat (limited to 'WebCore/platform/graphics/android/BaseLayerAndroid.cpp')
-rw-r--r--WebCore/platform/graphics/android/BaseLayerAndroid.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
index c59a5a5..c61a09a 100644
--- a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
@@ -163,13 +163,19 @@ bool BaseLayerAndroid::drawBasePictureInGL(SkRect& viewport, float scale, double
zooming = true;
}
+ // Display the current page
+ TiledPage* tiledPage = m_glWebViewState->frontPage();
+ tiledPage->setScale(m_glWebViewState->currentScale());
+
// Let's prepare the page if needed
if (prepareNextTiledPage) {
TiledPage* nextTiledPage = m_glWebViewState->backPage();
nextTiledPage->setScale(scale);
m_glWebViewState->setFutureViewport(viewportTileBounds);
m_glWebViewState->lockBaseLayerUpdate();
- nextTiledPage->prepare(goingDown, goingLeft, viewportTileBounds, true);
+ nextTiledPage->prepare(goingDown, goingLeft, viewportTileBounds);
+ // Cancel pending paints for the foreground page
+ TilesManager::instance()->removePaintOperationsForPage(tiledPage, false);
}
float transparency = 1;
@@ -205,9 +211,6 @@ bool BaseLayerAndroid::drawBasePictureInGL(SkRect& viewport, float scale, double
}
}
- // Display the current page
- TiledPage* tiledPage = m_glWebViewState->frontPage();
- tiledPage->setScale(m_glWebViewState->currentScale());
const SkIRect& preZoomBounds = m_glWebViewState->preZoomBounds();
TiledPage* nextTiledPage = m_glWebViewState->backPage();
@@ -240,7 +243,8 @@ bool BaseLayerAndroid::drawBasePictureInGL(SkRect& viewport, float scale, double
if (!zooming)
m_glWebViewState->unlockBaseLayerUpdate();
- tiledPage->prepare(goingDown, goingLeft, preZoomBounds, true);
+ if (!prepareNextTiledPage)
+ tiledPage->prepare(goingDown, goingLeft, preZoomBounds);
tiledPage->draw(transparency, preZoomBounds);
}