diff options
author | 2017-02-06 15:26:09 -0500 | |
---|---|---|
committer | 2017-02-07 15:43:45 +0000 | |
commit | 2b57b7f7a7fc97db57f190b5a8ebcf68e177ee2d (patch) | |
tree | 9b50da8887f7826d7f7f83ecab7f30eaddb7d7cf /src/core/SkBitmapProcShader.cpp | |
parent | e970d5965d041a9f67de7f49a0e27b9f1f6554a6 (diff) |
Use SkArenaAlloc instead of SkSmallAllocator in the SkAutoBlitterChoose code.
TBR=reed@google.com
Change-Id: Iefb044bf7657fbf982f23aa91a3f4d013ce2c626
Reviewed-on: https://skia-review.googlesource.com/7786
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkBitmapProcShader.cpp')
-rw-r--r-- | src/core/SkBitmapProcShader.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp index 11deac4aed..8c648b6051 100644 --- a/src/core/SkBitmapProcShader.cpp +++ b/src/core/SkBitmapProcShader.cpp @@ -6,6 +6,8 @@ */ #include "SkBitmapProcShader.h" + +#include "SkArenaAlloc.h" #include "SkBitmapProcState.h" #include "SkBitmapProvider.h" #include "SkXfermodePriv.h" @@ -33,10 +35,6 @@ public: } } - ~BitmapProcInfoContext() override { - fInfo->~SkBitmapProcInfo(); - } - uint32_t getFlags() const override { return fFlags; } private: @@ -201,10 +199,10 @@ size_t SkBitmapProcLegacyShader::ContextSize(const ContextRec& rec, const SkImag return s; } -SkShader::Context* SkBitmapProcLegacyShader::MakeContext(const SkShader& shader, - TileMode tmx, TileMode tmy, - const SkBitmapProvider& provider, - const ContextRec& rec, void* storage) { +SkShader::Context* SkBitmapProcLegacyShader::MakeContext( + const SkShader& shader, TileMode tmx, TileMode tmy, + const SkBitmapProvider& provider, const ContextRec& rec, SkArenaAlloc* alloc) +{ SkMatrix totalInverse; // Do this first, so we know the matrix can be inverted. if (!shader.computeTotalInverse(rec, &totalInverse)) { @@ -215,21 +213,17 @@ SkShader::Context* SkBitmapProcLegacyShader::MakeContext(const SkShader& shader, bool useLinearPipeline = choose_linear_pipeline(rec, provider.info()); if (useLinearPipeline) { - void* infoStorage = (char*)storage + sizeof(LinearPipelineContext); - SkBitmapProcInfo* info = new (infoStorage) SkBitmapProcInfo(provider, tmx, tmy); + SkBitmapProcInfo* info = alloc->make<SkBitmapProcInfo>(provider, tmx, tmy); if (!info->init(totalInverse, *rec.fPaint)) { - info->~SkBitmapProcInfo(); return nullptr; } - return new (storage) LinearPipelineContext(shader, rec, info); + return alloc->make<LinearPipelineContext>(shader, rec, info); } else { - void* stateStorage = (char*)storage + sizeof(BitmapProcShaderContext); - SkBitmapProcState* state = new (stateStorage) SkBitmapProcState(provider, tmx, tmy); + SkBitmapProcState* state = alloc->make<SkBitmapProcState>(provider, tmx, tmy); if (!state->setup(totalInverse, *rec.fPaint)) { - state->~SkBitmapProcState(); return nullptr; } - return new (storage) BitmapProcShaderContext(shader, rec, state); + return alloc->make<BitmapProcShaderContext>(shader, rec, state); } } |