summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2010-11-04 16:22:28 -0400
committerDerek Sollenberger <djsollen@google.com>2010-11-04 16:22:28 -0400
commit144ccd9c8dba05ffaa0ae598f9b70032050fc20e (patch)
treee63cbbd7d1297d293f0952904618b9ff63a981f1 /WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp
parentf337498167288e7a10576e418b97d8d9afa223c8 (diff)
downloadexternal_webkit-144ccd9c8dba05ffaa0ae598f9b70032050fc20e.zip
external_webkit-144ccd9c8dba05ffaa0ae598f9b70032050fc20e.tar.gz
external_webkit-144ccd9c8dba05ffaa0ae598f9b70032050fc20e.tar.bz2
Revert "Support partial invalidation of tiles based on webkit's inval rect."
This reverts commit fc92ca2409a95b539274985812d88016b6b84b7e.
Diffstat (limited to 'WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp')
-rw-r--r--WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp38
1 files changed, 32 insertions, 6 deletions
diff --git a/WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp b/WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp
index 1a8e686..7cecddd 100644
--- a/WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp
+++ b/WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp
@@ -56,27 +56,28 @@ BackedDoubleBufferedTexture::~BackedDoubleBufferedTexture()
TextureInfo* BackedDoubleBufferedTexture::producerLock()
{
- m_busyLock.lock();
+ m_varLock.lock();
m_busy = true;
- m_busyLock.unlock();
+ m_varLock.unlock();
return DoubleBufferedTexture::producerLock();
}
void BackedDoubleBufferedTexture::producerRelease()
{
DoubleBufferedTexture::producerRelease();
- android::Mutex::Autolock lock(m_busyLock);
+ android::Mutex::Autolock lock(m_varLock);
m_busy = false;
}
void BackedDoubleBufferedTexture::producerReleaseAndSwap()
{
DoubleBufferedTexture::producerReleaseAndSwap();
- android::Mutex::Autolock lock(m_busyLock);
+ android::Mutex::Autolock lock(m_varLock);
m_busy = false;
}
-void BackedDoubleBufferedTexture::producerUpdate(TextureInfo* textureInfo)
+void BackedDoubleBufferedTexture::producerUpdate(BaseTile* painter,
+ TextureInfo* textureInfo, PaintingInfo& info)
{
// no need to upload a texture since the bitmap is empty
if (!m_bitmap.width() && !m_bitmap.height()) {
@@ -92,9 +93,34 @@ void BackedDoubleBufferedTexture::producerUpdate(TextureInfo* textureInfo)
textureInfo->m_height = m_bitmap.height();
}
+ m_varLock.lock();
+ // set the painting information for this texture
+ if (equalsIdTextureA(textureInfo->m_textureId))
+ m_paintingInfoA = info;
+ else if (equalsIdTextureB(textureInfo->m_textureId))
+ m_paintingInfoB = info;
+ m_varLock.unlock();
+
producerReleaseAndSwap();
}
+// Compare the current texture displayed with some PaintingInfo.
+bool BackedDoubleBufferedTexture::consumerTextureUpToDate(PaintingInfo& info)
+{
+ android::Mutex::Autolock lock(m_varLock);
+ if (isTextureAReadable())
+ return info == m_paintingInfoA;
+ return info == m_paintingInfoB;
+}
+
+bool BackedDoubleBufferedTexture::consumerTextureSimilar(PaintingInfo& info)
+{
+ android::Mutex::Autolock lock(m_varLock);
+ if (isTextureAReadable())
+ return info.similar(m_paintingInfoA);
+ return info.similar(m_paintingInfoB);
+}
+
bool BackedDoubleBufferedTexture::acquire(BaseTile* owner)
{
if (m_owner == owner)
@@ -102,7 +128,7 @@ bool BackedDoubleBufferedTexture::acquire(BaseTile* owner)
// if the writable texture is busy (i.e. currently being written to) then we
// can't change the owner out from underneath that texture
- android::Mutex::Autolock lock(m_busyLock);
+ android::Mutex::Autolock lock(m_varLock);
if (!m_busy) {
if (m_owner)
m_owner->removeTexture();