diff options
author | Chris Craik <ccraik@google.com> | 2011-10-19 14:51:45 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2011-10-19 14:56:39 -0700 |
commit | 3ef9d5cc655b8274860b8d15441201d3e621baf5 (patch) | |
tree | ee8a3303dc301786d07269736558058bfd40e4f8 /Source/WebCore | |
parent | 8cc0fa17a42ae1dec75fe8ab00d5baa75e46499e (diff) | |
download | external_webkit-3ef9d5cc655b8274860b8d15441201d3e621baf5.zip external_webkit-3ef9d5cc655b8274860b8d15441201d3e621baf5.tar.gz external_webkit-3ef9d5cc655b8274860b8d15441201d3e621baf5.tar.bz2 |
Mark tiles dirty when discarded from transfer queue
bug:5409902
Tiles weren't always marked dirty, and could get out of the transfer queue
without being marked dirty.
Change-Id: Ia0fe71f00f61d7aede8ca7bc4a389ac417906d36
Diffstat (limited to 'Source/WebCore')
-rw-r--r-- | Source/WebCore/platform/graphics/android/BaseTile.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/WebCore/platform/graphics/android/BaseTile.cpp b/Source/WebCore/platform/graphics/android/BaseTile.cpp index 05b3a3d..f0b0dd2 100644 --- a/Source/WebCore/platform/graphics/android/BaseTile.cpp +++ b/Source/WebCore/platform/graphics/android/BaseTile.cpp @@ -510,6 +510,8 @@ void BaseTile::discardBackTexture() { m_backTexture->release(this); m_backTexture = 0; } + m_state = Unpainted; + m_dirty = true; } bool BaseTile::swapTexturesIfNeeded() { @@ -548,6 +550,7 @@ void BaseTile::backTextureTransferFail() { // retransferred. android::AutoMutex lock(m_atomicSync); m_state = Unpainted; + m_dirty = true; // whether validatePaint is called before or after, it won't do anything } @@ -563,9 +566,11 @@ void BaseTile::validatePaint() { else if (m_state == TransferredUnvalidated) m_state = ReadyToSwap; else { - // shouldn't have just finished painting in any other state, log XLOG("Note: validated tile %p at %d %d, state wasn't paintingstarted or transferred %d", this, m_x, m_y, m_state); + // failed transferring, in which case mark dirty (since + // paintBitmap() may have cleared m_dirty) + m_dirty = true; } if (m_deferredDirty) { |