summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/LayerAndroid.cpp
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2011-03-21 18:02:28 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-21 18:02:28 -0700
commit983c9f05fadaaceaa011dec0e5bcff2bd2b4199f (patch)
tree75bedb6d1eb2caf370c0d727fe5579254df28e88 /WebCore/platform/graphics/android/LayerAndroid.cpp
parent47817e2ea523c5798c192ec9005238611b3910eb (diff)
parent316a020310e1b50a64a0f9832f77c8ed0c1126ef (diff)
downloadexternal_webkit-983c9f05fadaaceaa011dec0e5bcff2bd2b4199f.zip
external_webkit-983c9f05fadaaceaa011dec0e5bcff2bd2b4199f.tar.gz
external_webkit-983c9f05fadaaceaa011dec0e5bcff2bd2b4199f.tar.bz2
Merge "Fix invals for CSS3D" into honeycomb-mr1
Diffstat (limited to 'WebCore/platform/graphics/android/LayerAndroid.cpp')
-rw-r--r--WebCore/platform/graphics/android/LayerAndroid.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/WebCore/platform/graphics/android/LayerAndroid.cpp b/WebCore/platform/graphics/android/LayerAndroid.cpp
index dba1ceb..009915e 100644
--- a/WebCore/platform/graphics/android/LayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/LayerAndroid.cpp
@@ -252,8 +252,12 @@ bool LayerAndroid::evaluateAnimations(double time)
void LayerAndroid::addDirtyArea(GLWebViewState* glWebViewState)
{
- IntRect rect(0, 0, getWidth(), getHeight());
- IntRect dirtyArea = drawTransform().mapRect(rect);
+ IntSize layerSize(getSize().width(), getSize().height());
+
+ FloatRect area =
+ TilesManager::instance()->shader()->projectedRect(drawTransform(), layerSize);
+ IntRect dirtyArea(area.x(), area.y(), area.width(), area.height());
+
IntRect clip(m_clippingRect.x(), m_clippingRect.y(), m_clippingRect.width(), m_clippingRect.height());
dirtyArea.intersect(clip);
glWebViewState->addDirtyArea(dirtyArea);
@@ -945,7 +949,7 @@ bool LayerAndroid::drawGL(GLWebViewState* glWebViewState, SkMatrix& matrix)
bool askPaint = drawChildrenGL(glWebViewState, matrix);
m_atomicSync.lock();
askPaint |= m_dirty;
- if (m_dirty || m_hasRunningAnimations)
+ if (m_dirty || m_hasRunningAnimations || drawTransform().hasPerspective())
addDirtyArea(glWebViewState);
m_atomicSync.unlock();
return askPaint;