diff options
author | Nicolas Roard <nicolasroard@google.com> | 2012-05-17 17:32:25 -0700 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2012-05-17 18:01:19 -0700 |
commit | 377dc9f6b46a2ac0f968d9ee8d3c7916f3bf6904 (patch) | |
tree | 518fb21355b3530d6cdd18e3c6303348ee5501c0 /Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp | |
parent | 37df6b06a8481e3608cff1718038d353a8733d6c (diff) | |
download | external_webkit-377dc9f6b46a2ac0f968d9ee8d3c7916f3bf6904.zip external_webkit-377dc9f6b46a2ac0f968d9ee8d3c7916f3bf6904.tar.gz external_webkit-377dc9f6b46a2ac0f968d9ee8d3c7916f3bf6904.tar.bz2 |
Fix invalidations sent to framework
bug:6479200 bug:6323847 bug:4124445
Change-Id: I1a4058ba6c69d3e285b6274d99a6eafcbf1cdc6f
Diffstat (limited to 'Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp b/Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp index b4fd699..5abca02 100644 --- a/Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp +++ b/Source/WebCore/platform/graphics/android/rendering/SurfaceCollectionManager.cpp @@ -68,12 +68,14 @@ void SurfaceCollectionManager::swap() // if we have a drawing collection, discard it since the painting collection is done if (m_drawingCollection) { ALOGV("destroying drawing collection %p", m_drawingCollection); + m_drawingCollection->addFrameworkInvals(); SkSafeUnref(m_drawingCollection); } // painting collection becomes the drawing collection ALOGV("drawing collection %p", m_paintingCollection); m_paintingCollection->setIsDrawing(); // initialize animations + m_paintingCollection->addFrameworkInvals(); if (m_queuedCollection) { // start painting with the queued collection @@ -203,6 +205,10 @@ int SurfaceCollectionManager::drawGL(double currentTime, IntRect& viewRect, m_drawingCollection, m_paintingCollection, m_queuedCollection, m_fastSwapMode, shouldDraw); + // ask for kStatusInvoke while painting, kStatusDraw if we have content to be redrawn next frame + // returning 0 indicates all painting complete, no framework inval needed. + int returnFlags = 0; + bool didCollectionSwap = false; if (m_paintingCollection) { ALOGV("preparing painting collection %p", m_paintingCollection); @@ -222,6 +228,7 @@ int SurfaceCollectionManager::drawGL(double currentTime, IntRect& viewRect, if (newCollectionHasAnimPtr) *newCollectionHasAnimPtr = m_paintingCollection->hasCompositedAnimations(); swap(); + returnFlags |= uirenderer::DrawGlInfo::kStatusDraw; } } else if (m_drawingCollection) { ALOGV("preparing drawing collection %p", m_drawingCollection); @@ -229,10 +236,6 @@ int SurfaceCollectionManager::drawGL(double currentTime, IntRect& viewRect, m_drawingCollection->computeTexturesAmount(texturesResultPtr); } - // ask for kStatusInvoke while painting, kStatusDraw if we have content to be redrawn next frame - // returning 0 indicates all painting complete, no framework inval needed. - int returnFlags = 0; - if (m_paintingCollection) returnFlags |= DrawGlInfo::kStatusInvoke; |