From 144ccd9c8dba05ffaa0ae598f9b70032050fc20e Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Thu, 4 Nov 2010 16:22:28 -0400 Subject: Revert "Support partial invalidation of tiles based on webkit's inval rect." This reverts commit fc92ca2409a95b539274985812d88016b6b84b7e. --- .../android/BackedDoubleBufferedTexture.cpp | 38 ++++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'WebCore/platform/graphics/android/BackedDoubleBufferedTexture.cpp') 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(); -- cgit v1.1