aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBlitter_RGB16.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkBlitter_RGB16.cpp')
-rw-r--r--src/core/SkBlitter_RGB16.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/SkBlitter_RGB16.cpp b/src/core/SkBlitter_RGB16.cpp
index 7860b7cb6c..066ec616de 100644
--- a/src/core/SkBlitter_RGB16.cpp
+++ b/src/core/SkBlitter_RGB16.cpp
@@ -160,7 +160,7 @@ SkRGB16_Black_Blitter::SkRGB16_Black_Blitter(const SkPixmap& device, const SkPai
: INHERITED(device, paint) {
SkASSERT(paint.getShader() == nullptr);
SkASSERT(paint.getColorFilter() == nullptr);
- SkASSERT(paint.isSrcOver());
+ SkASSERT(paint.getXfermode() == nullptr);
SkASSERT(paint.getColor() == SK_ColorBLACK);
}
@@ -683,7 +683,7 @@ SkRGB16_Shader_Blitter::SkRGB16_Shader_Blitter(const SkPixmap& device,
SkShader::Context* shaderContext)
: INHERITED(device, paint, shaderContext)
{
- SkASSERT(paint.isSrcOver());
+ SkASSERT(paint.getXfermode() == nullptr);
fBuffer = (SkPMColor*)sk_malloc_throw(device.width() * sizeof(SkPMColor));
@@ -809,8 +809,9 @@ SkRGB16_Shader_Xfermode_Blitter::SkRGB16_Shader_Xfermode_Blitter(
SkShader::Context* shaderContext)
: INHERITED(device, paint, shaderContext)
{
- fXfermode = SkXfermode::Peek(paint.getBlendMode());
+ fXfermode = paint.getXfermode();
SkASSERT(fXfermode);
+ fXfermode->ref();
int width = device.width();
fBuffer = (SkPMColor*)sk_malloc_throw((width + (SkAlign4(width) >> 2)) * sizeof(SkPMColor));
@@ -818,6 +819,7 @@ SkRGB16_Shader_Xfermode_Blitter::SkRGB16_Shader_Xfermode_Blitter(
}
SkRGB16_Shader_Xfermode_Blitter::~SkRGB16_Shader_Xfermode_Blitter() {
+ fXfermode->unref();
sk_free(fBuffer);
}
@@ -895,14 +897,14 @@ SkBlitter* SkBlitter_ChooseD565(const SkPixmap& device, const SkPaint& paint,
SkBlitter* blitter;
SkShader* shader = paint.getShader();
- bool is_srcover = paint.isSrcOver();
+ SkXfermode* mode = paint.getXfermode();
// we require a shader if there is an xfermode, handled by our caller
- SkASSERT(is_srcover || shader);
+ SkASSERT(nullptr == mode || shader);
if (shader) {
SkASSERT(shaderContext != nullptr);
- if (!is_srcover) {
+ if (mode) {
blitter = allocator->createT<SkRGB16_Shader_Xfermode_Blitter>(device, paint,
shaderContext);
} else {