summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2012-03-12 18:06:23 -0700
committerChris Craik <ccraik@google.com>2012-03-12 18:11:55 -0700
commitf45ca4ff95048a760ed796d7fb20386af58ebe00 (patch)
treea2223887da654e128e8111465e284a40599c91ce
parentd487c56b47c747d3e331ee1892e4c0473363afd2 (diff)
downloadexternal_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.cpp5
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;
}