diff options
author | Derek Sollenberger <djsollen@google.com> | 2011-03-01 09:23:53 -0500 |
---|---|---|
committer | Sriram Raman <sriramkraman@google.com> | 2011-03-01 22:37:14 -0500 |
commit | 9002de961a78d8c63b2399846d290bff2d79a3f4 (patch) | |
tree | 866d0b3c01e9914b32ad94d83da6352af61d1def /WebCore | |
parent | 65b97159d8d180594e604d2ca5f6674388354416 (diff) | |
download | external_webkit-9002de961a78d8c63b2399846d290bff2d79a3f4.zip external_webkit-9002de961a78d8c63b2399846d290bff2d79a3f4.tar.gz external_webkit-9002de961a78d8c63b2399846d290bff2d79a3f4.tar.bz2 |
Do not merge: Cherry-pick fix to framerate cap
Bug: 3471680
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: I359a79f5981bc29d57ce4b94eb00a5c9aee754d0
Diffstat (limited to 'WebCore')
-rw-r--r-- | WebCore/platform/graphics/android/GLWebViewState.cpp | 7 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/GLWebViewState.h | 1 |
2 files changed, 4 insertions, 4 deletions
diff --git a/WebCore/platform/graphics/android/GLWebViewState.cpp b/WebCore/platform/graphics/android/GLWebViewState.cpp index 57d4c66..0e7f559 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(); @@ -298,19 +299,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; diff --git a/WebCore/platform/graphics/android/GLWebViewState.h b/WebCore/platform/graphics/android/GLWebViewState.h index 4b71d86..9940631 100644 --- a/WebCore/platform/graphics/android/GLWebViewState.h +++ b/WebCore/platform/graphics/android/GLWebViewState.h @@ -252,6 +252,7 @@ private: IntRect m_invalidateRect; SkColor m_backgroundColor; + double m_prevDrawTime; }; } // namespace WebCore |