diff options
author | John Reck <jreck@google.com> | 2011-03-23 18:02:27 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-05-05 14:31:39 -0700 |
commit | 0c23c9caf76a37515b4911e84606ad36a43cd74e (patch) | |
tree | e31a62e03fef93e8200624adb31a2b11c037711c /WebCore/platform/graphics/android/BaseLayerAndroid.cpp | |
parent | 2d60bef786645e5b9e2da0e8374d3f06a40d0638 (diff) | |
download | external_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.cpp | 14 |
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); } |