From 4552e94bc4603208f93db6e2afffbb3ea91d5241 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Tue, 1 Mar 2011 09:23:53 -0500 Subject: Fix framerate cap when multiple webviews exist. Each view will now be capped at 60fps. The previous code would either starve the drawing of additional webviews or would draw them at a rate of 60fps/N where N is the number of webviews. Change-Id: I5698d610b17d4c8cfe137c51c2b978dae04ae1cf --- WebCore/platform/graphics/android/GLWebViewState.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'WebCore/platform/graphics/android/GLWebViewState.cpp') diff --git a/WebCore/platform/graphics/android/GLWebViewState.cpp b/WebCore/platform/graphics/android/GLWebViewState.cpp index 3ca04e9..c65b763 100644 --- a/WebCore/platform/graphics/android/GLWebViewState.cpp +++ b/WebCore/platform/graphics/android/GLWebViewState.cpp @@ -71,6 +71,7 @@ GLWebViewState::GLWebViewState(android::Mutex* buttonMutex) , m_globalButtonMutex(buttonMutex) , m_baseLayerUpdate(true) , m_backgroundColor(SK_ColorWHITE) + , m_prevDrawTime(0) { m_viewport.setEmpty(); m_previousViewport.setEmpty(); @@ -301,19 +302,17 @@ void GLWebViewState::setViewport(SkRect& viewport, float scale) m_tiledPageB->updateBaseTileSize(); } -static double gPrevTime = 0; - bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, float scale, SkColor color) { glFinish(); double currentTime = WTF::currentTime(); - double delta = currentTime - gPrevTime; + double delta = currentTime - m_prevDrawTime; if (delta < FRAMERATE_CAP) return true; - gPrevTime = currentTime; + m_prevDrawTime = currentTime; m_baseLayerLock.lock(); BaseLayerAndroid* baseLayer = m_currentBaseLayer; -- cgit v1.1