| Index: src/core/SkDrawLooper.cpp
|
| diff --git a/src/core/SkDrawLooper.cpp b/src/core/SkDrawLooper.cpp
|
| index aa53f2e3a13176893d84fabaaec25848bd93b288..4f495a71df0e43c9680181aa841aacc389ea8ce9 100644
|
| --- a/src/core/SkDrawLooper.cpp
|
| +++ b/src/core/SkDrawLooper.cpp
|
| @@ -15,9 +15,12 @@
|
| bool SkDrawLooper::canComputeFastBounds(const SkPaint& paint) const {
|
| SkCanvas canvas;
|
| SkSmallAllocator<1, 32> allocator;
|
| - void* buffer = allocator.reserveT<SkDrawLooper::Context>(this->contextSize());
|
|
|
| - SkDrawLooper::Context* context = this->createContext(&canvas, buffer);
|
| + SkDrawLooper::Context* context = allocator.createWithIniterT<SkDrawLooper::Context>(
|
| + this->contextSize(),
|
| + [&](void* buffer) {
|
| + return this->createContext(&canvas, buffer);
|
| + });
|
| for (;;) {
|
| SkPaint p(paint);
|
| if (context->next(&canvas, &p)) {
|
| @@ -39,10 +42,13 @@ void SkDrawLooper::computeFastBounds(const SkPaint& paint, const SkRect& s,
|
|
|
| SkCanvas canvas;
|
| SkSmallAllocator<1, 32> allocator;
|
| - void* buffer = allocator.reserveT<SkDrawLooper::Context>(this->contextSize());
|
|
|
| *dst = src; // catch case where there are no loops
|
| - SkDrawLooper::Context* context = this->createContext(&canvas, buffer);
|
| + SkDrawLooper::Context* context = allocator.createWithIniterT<SkDrawLooper::Context>(
|
| + this->contextSize(),
|
| + [&](void* buffer) {
|
| + return this->createContext(&canvas, buffer);
|
| + });
|
| for (bool firstTime = true;; firstTime = false) {
|
| SkPaint p(paint);
|
| if (context->next(&canvas, &p)) {
|
|
|