aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/SkScan_AAAPath.cpp7
-rw-r--r--tests/PathTest.cpp4
2 files changed, 11 insertions, 0 deletions
diff --git a/src/core/SkScan_AAAPath.cpp b/src/core/SkScan_AAAPath.cpp
index d67f7eb509..1a74ce1a35 100644
--- a/src/core/SkScan_AAAPath.cpp
+++ b/src/core/SkScan_AAAPath.cpp
@@ -1467,10 +1467,17 @@ static void aaa_walk_edges(SkAnalyticEdge* prevHead, SkAnalyticEdge* nextTail,
} else {
SkFixed rite = currE->fX;
currE->goY(nextY, yShift);
+#ifdef SK_SUPPORT_LEGACY_DELTA_AA
+ leftE->fX = SkTMax(leftClip, leftE->fX);
+ rite = SkTMin(rightClip, rite);
+ currE->fX = SkTMin(rightClip, currE->fX);
+ blit_trapezoid_row(blitter, y >> 16, left, rite, leftE->fX, currE->fX,
+#else
SkFixed nextLeft = SkTMax(leftClip, leftE->fX);
rite = SkTMin(rightClip, rite);
SkFixed nextRite = SkTMin(rightClip, currE->fX);
blit_trapezoid_row(blitter, y >> 16, left, rite, nextLeft, nextRite,
+#endif
leftDY, currE->fDY, fullAlpha, maskRow, isUsingMask,
noRealBlitter || (fullAlpha == 0xFF && (
edges_too_close(prevRite, left, leftE->fX) ||
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 873f5cb17c..6e1cf011c4 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -4467,6 +4467,7 @@ static void test_fuzz_crbug_662730(skiatest::Reporter* reporter) {
surface->getCanvas()->drawPath(path, paint);
}
+#if !defined(SK_SUPPORT_LEGACY_DELTA_AA)
static void test_skbug_6947() {
SkPath path;
SkPoint points[] =
@@ -4506,6 +4507,7 @@ static void test_skbug_6947() {
paint.setAntiAlias(true);
surface->getCanvas()->drawPath(path, paint);
}
+#endif
static void test_interp(skiatest::Reporter* reporter) {
SkPath p1, p2, out;
@@ -4579,7 +4581,9 @@ DEF_TEST(Paths, reporter) {
test_mask_overflow();
test_path_crbugskia6003();
test_fuzz_crbug_668907();
+#if !defined(SK_SUPPORT_LEGACY_DELTA_AA)
test_skbug_6947();
+#endif
SkSize::Make(3, 4);