| Index: src/core/SkBitmapProcShader.cpp
|
| diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp
|
| index 74b9e86669eead31a270822791558e2b2c2c0adc..bc4e96eeea62d3f6ef59d2e81bbe75b8f1e0baa1 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,31 @@ 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,
|
| + SkStackAllocator<kBlitterStorageByteCount>* allocator) {
|
| SkShader* shader;
|
| SkColor color;
|
| if (src.isNull() || bitmapIsTooBig(src)) {
|
| - SK_PLACEMENT_NEW(shader, SkEmptyShader, storage, storageSize);
|
| + if (NULL == allocator) {
|
| + shader = SkNEW(SkEmptyShader);
|
| + } else {
|
| + SkSTACK_ALLOCATE(shader, (*allocator), SkEmptyShader, ());
|
| + }
|
| }
|
| else if (canUseColorShader(src, &color)) {
|
| - SK_PLACEMENT_NEW_ARGS(shader, SkColorShader, storage, storageSize,
|
| - (color));
|
| + if (NULL == allocator) {
|
| + shader = SkNEW_ARGS(SkColorShader, (color));
|
| + } else {
|
| + SkSTACK_ALLOCATE(shader, (*allocator), 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 {
|
| + SkSTACK_ALLOCATE(shader, (*allocator), SkBitmapProcShader,
|
| + (src, tmx, tmy));
|
| + }
|
| }
|
| return shader;
|
| }
|
|
|