Chromium Code Reviews| Index: src/core/SkBitmapProcShader.cpp |
| diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp |
| index 74b9e86669eead31a270822791558e2b2c2c0adc..55a772ec10ace94578a4be78cedbd508de1deb97 100644 |
| --- a/src/core/SkBitmapProcShader.cpp |
| +++ b/src/core/SkBitmapProcShader.cpp |
| @@ -294,8 +294,6 @@ static bool canUseColorShader(const SkBitmap& bm, SkColor* color) { |
| return false; |
| } |
| -#include "SkTemplatesPriv.h" |
| - |
| static bool bitmapIsTooBig(const SkBitmap& bm) { |
| // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it |
| // communicates between its matrix-proc and its sampler-proc. Until we can |
| @@ -306,20 +304,29 @@ static bool bitmapIsTooBig(const SkBitmap& bm) { |
| return bm.width() > maxSize || bm.height() > maxSize; |
| } |
| -SkShader* SkShader::CreateBitmapShader(const SkBitmap& src, |
| - TileMode tmx, TileMode tmy, |
| - void* storage, size_t storageSize) { |
| +SkShader* CreateBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, |
| + SkShader::TileMode tmy, SkTBlitterAllocator* allocator) { |
|
mtklein
2014/03/05 20:59:56
Just curious: does anyone pass a NULL allocator?
scroggo
2014/03/05 23:23:26
Yes. SkShader::CreateBitmapShader (in SkShader.cpp
|
| SkShader* shader; |
| SkColor color; |
| if (src.isNull() || bitmapIsTooBig(src)) { |
| - SK_PLACEMENT_NEW(shader, SkEmptyShader, storage, storageSize); |
| + if (NULL == allocator) { |
| + shader = SkNEW(SkEmptyShader); |
| + } else { |
| + shader = allocator->createT<SkEmptyShader>(); |
| + } |
| } |
| else if (canUseColorShader(src, &color)) { |
| - SK_PLACEMENT_NEW_ARGS(shader, SkColorShader, storage, storageSize, |
| - (color)); |
| + if (NULL == allocator) { |
| + shader = SkNEW_ARGS(SkColorShader, (color)); |
| + } else { |
| + shader = allocator->createT<SkColorShader>(color); |
| + } |
| } else { |
| - SK_PLACEMENT_NEW_ARGS(shader, SkBitmapProcShader, storage, |
| - storageSize, (src, tmx, tmy)); |
| + if (NULL == allocator) { |
| + shader = SkNEW_ARGS(SkBitmapProcShader, (src, tmx, tmy)); |
| + } else { |
| + shader = allocator->createT<SkBitmapProcShader>(src, tmx, tmy); |
| + } |
| } |
| return shader; |
| } |