diff options
author | mtklein <mtklein@chromium.org> | 2016-11-13 09:55:05 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-13 09:55:05 -0800 |
commit | f982cb37e3092e7a69c13a12ec09806ceff5af45 (patch) | |
tree | 3d8c187a3f8c37a799c60f355b96f43601c272f5 /src/core/SkDrawLooper.cpp | |
parent | c18b5f8f57a4efc5d5d1e399ed8bd3bd02c592ab (diff) |
Revert of Make SkSmallAllocator obey the RAII invariants and be expandable (patchset #15 id:280001 of https://codereview.chromium.org/2488523003/ )
Reason for revert:
bots crashing / asserting
Original issue's description:
> Make SkSmallAllocator obey the RAII invariants and move to heap structures when needed.
>
> The biggest change is to the API which allowed code to bypass the
> destruction invariants. This destruction bypass feature was needed in
> only one use, and is totally encapsulated using createWithIniterT.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2488523003
>
> Committed: https://skia.googlesource.com/skia/+/d5dc657b8c3ac916f98005dafdedafe02f023449
> Committed: https://skia.googlesource.com/skia/+/c18b5f8f57a4efc5d5d1e399ed8bd3bd02c592ab
TBR=bungeman@google.com,herb@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review-Url: https://codereview.chromium.org/2494353002
Diffstat (limited to 'src/core/SkDrawLooper.cpp')
-rw-r--r-- | src/core/SkDrawLooper.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/core/SkDrawLooper.cpp b/src/core/SkDrawLooper.cpp index e372e8f157..aa53f2e3a1 100644 --- a/src/core/SkDrawLooper.cpp +++ b/src/core/SkDrawLooper.cpp @@ -15,12 +15,9 @@ bool SkDrawLooper::canComputeFastBounds(const SkPaint& paint) const { SkCanvas canvas; SkSmallAllocator<1, 32> allocator; + void* buffer = allocator.reserveT<SkDrawLooper::Context>(this->contextSize()); - SkDrawLooper::Context* context = allocator.createWithIniter( - this->contextSize(), - [&](void* buffer) { - return this->createContext(&canvas, buffer); - }); + SkDrawLooper::Context* context = this->createContext(&canvas, buffer); for (;;) { SkPaint p(paint); if (context->next(&canvas, &p)) { @@ -42,13 +39,10 @@ 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 = allocator.createWithIniter( - this->contextSize(), - [&](void* buffer) { - return this->createContext(&canvas, buffer); - }); + SkDrawLooper::Context* context = this->createContext(&canvas, buffer); for (bool firstTime = true;; firstTime = false) { SkPaint p(paint); if (context->next(&canvas, &p)) { |