| Index: gm/convexpaths.cpp | 
| diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp | 
| index 2c4753d95a48ff78cf7b6cc9e47058d1c31f8440..a354bd4cef3489c9419b3682bb790cb261bda75f 100644 | 
| --- a/gm/convexpaths.cpp | 
| +++ b/gm/convexpaths.cpp | 
| @@ -120,12 +120,30 @@ protected: | 
| 20 * SK_Scalar1, 40 * SK_Scalar1, | 
| SkPath::kCCW_Direction); | 
|  | 
| +        // large number of points | 
| +        enum { | 
| +            kLength = 100, | 
| +            kPtsPerSide = (1 << 12), | 
| +        }; | 
| +        fPaths.push_back().moveTo(0, 0); | 
| +        for (int i = 1; i < kPtsPerSide; ++i) { // skip the first point due to moveTo. | 
| +            fPaths.back().lineTo(kLength * SkIntToScalar(i) / kPtsPerSide, 0); | 
| +        } | 
| +        for (int i = 0; i < kPtsPerSide; ++i) { | 
| +            fPaths.back().lineTo(kLength, kLength * SkIntToScalar(i) / kPtsPerSide); | 
| +        } | 
| +        for (int i = kPtsPerSide; i > 0; --i) { | 
| +            fPaths.back().lineTo(kLength * SkIntToScalar(i) / kPtsPerSide, kLength); | 
| +        } | 
| +        for (int i = kPtsPerSide; i > 0; --i) { | 
| +            fPaths.back().lineTo(0, kLength * SkIntToScalar(i) / kPtsPerSide); | 
| +        } | 
| + | 
| // shallow diagonals | 
| fPaths.push_back().lineTo(100 * SK_Scalar1, SK_Scalar1); | 
| fPaths.back().lineTo(98 * SK_Scalar1, 100 * SK_Scalar1); | 
| fPaths.back().lineTo(3 * SK_Scalar1, 96 * SK_Scalar1); | 
|  | 
| - | 
| //It turns out arcTos are not automatically marked as convex and they | 
| //may in fact be ever so slightly concave. | 
| //fPaths.push_back().arcTo(SkRect::MakeXYWH(0, 0, | 
|  |