diff options
| author | Chris Craik <ccraik@google.com> | 2012-03-12 18:06:23 -0700 |
|---|---|---|
| committer | Chris Craik <ccraik@google.com> | 2012-03-12 18:11:55 -0700 |
| commit | f45ca4ff95048a760ed796d7fb20386af58ebe00 (patch) | |
| tree | a2223887da654e128e8111465e284a40599c91ce | |
| parent | d487c56b47c747d3e331ee1892e4c0473363afd2 (diff) | |
| download | external_webkit-f45ca4ff95048a760ed796d7fb20386af58ebe00.zip external_webkit-f45ca4ff95048a760ed796d7fb20386af58ebe00.tar.gz external_webkit-f45ca4ff95048a760ed796d7fb20386af58ebe00.tar.bz2 | |
Fix tile discard, acquire, transfer, crash
Tile texture discard could leave the transfer queue with a mismatched base tile
and texture, so that the saved tile isn't the correct owner. Detect this case,
and mark the transfer obsolete.
bug:6157456
Change-Id: Ib02ecf877c4b99d07172541db8236e15c528af58
| -rw-r--r-- | Source/WebCore/platform/graphics/android/TransferQueue.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Source/WebCore/platform/graphics/android/TransferQueue.cpp b/Source/WebCore/platform/graphics/android/TransferQueue.cpp index d5ffc1a..ac45112 100644 --- a/Source/WebCore/platform/graphics/android/TransferQueue.cpp +++ b/Source/WebCore/platform/graphics/android/TransferQueue.cpp @@ -135,8 +135,9 @@ bool TransferQueue::checkObsolete(const TileTransferData* data) } BaseTileTexture* baseTileTexture = baseTilePtr->backTexture(); - if (!baseTileTexture) { - ALOGV("Invalid baseTileTexture , such that the tile is obsolete"); + if (!baseTileTexture || baseTileTexture != data->savedBaseTileTexturePtr) { + ALOGV("Invalid baseTileTexture %p (vs expected %p), such that the tile is obsolete", + baseTileTexture, data->savedBaseTileTexturePtr); return true; } |
