diff options
author | Chris Craik <ccraik@google.com> | 2012-05-21 15:49:31 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2012-05-21 15:59:32 -0700 |
commit | d7fd74bf26582bbf3ba7a80420ea5ebe170be473 (patch) | |
tree | 29991845f56966faaddc99b11fa526ba47607dba /Source | |
parent | 6baa213e1806af132b1f0b1170343c5ac2bf75d3 (diff) | |
download | external_webkit-d7fd74bf26582bbf3ba7a80420ea5ebe170be473.zip external_webkit-d7fd74bf26582bbf3ba7a80420ea5ebe170be473.tar.gz external_webkit-d7fd74bf26582bbf3ba7a80420ea5ebe170be473.tar.bz2 |
Disable transform fudging for merged surfaces
Draw transforms are used at painting time for merged surfaces, so they shouldn't
be manipulated in the draw path. The fudging isn't necessary for these surfaces
in the first place, as merged surfaces are always aligned to pixel coordinates.
bug:6156523
Change-Id: I3d954869188008f1a9e35915df893d75b49be6a2
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebCore/platform/graphics/android/layers/LayerAndroid.cpp | 5 | ||||
-rw-r--r-- | Source/WebCore/platform/graphics/android/rendering/Surface.h | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/Source/WebCore/platform/graphics/android/layers/LayerAndroid.cpp b/Source/WebCore/platform/graphics/android/layers/LayerAndroid.cpp index 6e88081..182e811 100644 --- a/Source/WebCore/platform/graphics/android/layers/LayerAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/layers/LayerAndroid.cpp @@ -411,9 +411,12 @@ void LayerAndroid::updateGLPositionsAndScale(const TransformationMatrix& parentM -anchorPointZ()); setDrawTransform(localMatrix); - if (m_drawTransform.isIdentityOrTranslation()) { + if (m_drawTransform.isIdentityOrTranslation() + && surface() && surface()->allowTransformFudging()) { // adjust the translation coordinates of the draw transform matrix so // that layers (defined in content coordinates) will align to display/view pixels + + // the surface may not allow fudging if it uses the draw transform at paint time float desiredContentX = round(m_drawTransform.m41() * scale) / scale; float desiredContentY = round(m_drawTransform.m42() * scale) / scale; ALOGV("fudging translation from %f, %f to %f, %f", diff --git a/Source/WebCore/platform/graphics/android/rendering/Surface.h b/Source/WebCore/platform/graphics/android/rendering/Surface.h index 0286259..535d2c1 100644 --- a/Source/WebCore/platform/graphics/android/rendering/Surface.h +++ b/Source/WebCore/platform/graphics/android/rendering/Surface.h @@ -64,6 +64,10 @@ public: bool hasText() { return m_hasText; } bool isBase(); + // don't allow transform fudging for merged layers - they need the transform + // static at paint time, and are always aligned to 0,0 doc coordinates. + bool allowTransformFudging() const { return singleLayer(); } + // TilePainter methods virtual bool paint(SkCanvas* canvas); virtual float opacity(); |