Index: src/core/SkBlitter.cpp |
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp |
index db9fcda93b19fc3b364859b0727de89e3b55888e..b57bd43ad0a4ebe7bd123a03f4afadda235e7f3e 100644 |
--- a/src/core/SkBlitter.cpp |
+++ b/src/core/SkBlitter.cpp |
@@ -71,17 +71,22 @@ void SkBlitter::blitRect(int x, int y, int width, int height) { |
} |
} |
-/// Default implementation doesn't check for any easy optimizations |
-/// such as alpha == 0 or 255; also uses blitV(), which some subclasses |
+/// Default implementation doesn't check for easy optimizations |
+/// such as alpha == 255; also uses blitV(), which some subclasses |
/// may not support. |
void SkBlitter::blitAntiRect(int x, int y, int width, int height, |
SkAlpha leftAlpha, SkAlpha rightAlpha) { |
- this->blitV(x++, y, height, leftAlpha); |
+ if (leftAlpha > 0) { // we may send in x = -1 with leftAlpha = 0 |
+ this->blitV(x, y, height, leftAlpha); |
+ } |
+ x++; |
if (width > 0) { |
this->blitRect(x, y, width, height); |
x += width; |
} |
- this->blitV(x, y, height, rightAlpha); |
+ if (rightAlpha > 0) { |
+ this->blitV(x, y, height, rightAlpha); |
+ } |
} |
////////////////////////////////////////////////////////////////////////////// |