diff options
-rw-r--r-- | src/core/SkScan_AAAPath.cpp | 7 | ||||
-rw-r--r-- | tests/PathTest.cpp | 4 |
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); |