| Index: Source/core/platform/graphics/Pattern.cpp
|
| diff --git a/Source/core/platform/graphics/Pattern.cpp b/Source/core/platform/graphics/Pattern.cpp
|
| index 1256718db5fb8d8c3a8d84752611020c89e5fdf6..7e12c81354911ce96c2b8d646d1a070b4ca3735d 100644
|
| --- a/Source/core/platform/graphics/Pattern.cpp
|
| +++ b/Source/core/platform/graphics/Pattern.cpp
|
| @@ -40,7 +40,6 @@ Pattern::Pattern(PassRefPtr<Image> image, bool repeatX, bool repeatY)
|
| : m_tileImage(image)
|
| , m_repeatX(repeatX)
|
| , m_repeatY(repeatY)
|
| - , m_pattern(0)
|
| , m_externalMemoryAllocated(0)
|
| {
|
| ASSERT(m_tileImage);
|
| @@ -48,25 +47,21 @@ Pattern::Pattern(PassRefPtr<Image> image, bool repeatX, bool repeatY)
|
|
|
| Pattern::~Pattern()
|
| {
|
| - SkSafeUnref(m_pattern);
|
| - m_pattern = 0;
|
| - if (m_externalMemoryAllocated) {
|
| + if (m_externalMemoryAllocated)
|
| v8::V8::AdjustAmountOfExternalAllocatedMemory(-m_externalMemoryAllocated);
|
| - m_externalMemoryAllocated = 0;
|
| - }
|
| }
|
|
|
| SkShader* Pattern::shader()
|
| {
|
| if (m_pattern)
|
| - return m_pattern;
|
| + return m_pattern.get();
|
|
|
| RefPtr<NativeImageSkia> image = m_tileImage->nativeImageForCurrentFrame();
|
| // If we don't have a bitmap, return a transparent shader.
|
| if (!image)
|
| - m_pattern = new SkColorShader(SkColorSetARGB(0, 0, 0, 0));
|
| + m_pattern = adoptRef(new SkColorShader(SK_ColorTRANSPARENT));
|
| else if (m_repeatX && m_repeatY)
|
| - m_pattern = SkShader::CreateBitmapShader(image->bitmap(), SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
|
| + m_pattern = adoptRef(SkShader::CreateBitmapShader(image->bitmap(), SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode));
|
| else {
|
| // Skia does not have a "draw the tile only once" option. Clamp_TileMode
|
| // repeats the last line of the image after drawing one tile. To avoid
|
| @@ -88,14 +83,14 @@ SkShader* Pattern::shader()
|
| SkCanvas canvas(bm2);
|
| canvas.drawBitmap(image->bitmap(), 0, 0);
|
| bm2.setImmutable();
|
| - m_pattern = SkShader::CreateBitmapShader(bm2, tileModeX, tileModeY);
|
| + m_pattern = adoptRef(SkShader::CreateBitmapShader(bm2, tileModeX, tileModeY));
|
|
|
| // Clamp to int, since that's what the adjust function takes.
|
| m_externalMemoryAllocated = static_cast<int>(std::min(static_cast<size_t>(INT_MAX), bm2.getSafeSize()));
|
| v8::V8::AdjustAmountOfExternalAllocatedMemory(m_externalMemoryAllocated);
|
| }
|
| m_pattern->setLocalMatrix(m_patternSpaceTransformation);
|
| - return m_pattern;
|
| + return m_pattern.get();
|
| }
|
|
|
| void Pattern::setPatternSpaceTransform(const AffineTransform& patternSpaceTransformation)
|
|
|