Chromium Code Reviews| Index: gm/arithmode.cpp |
| diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp |
| index 63be6c387166660f22c03bcc98c3baad3ecac90a..715103273271fd0c0542cbf0399539056f7376f0 100644 |
| --- a/gm/arithmode.cpp |
| +++ b/gm/arithmode.cpp |
| @@ -11,7 +11,9 @@ |
| #include "SkShader.h" |
| #include "SkArithmeticMode.h" |
| +#include "SkBitmapSource.h" |
| #include "SkGradientShader.h" |
| +#include "SkXfermodeImageFilter.h" |
| #define WW 100 |
| #define HH 32 |
| @@ -113,7 +115,15 @@ protected: |
| canvas->drawBitmap(dst, x, y, NULL); |
| SkXfermode* xfer = SkArithmeticMode::Create(k[0], k[1], k[2], k[3]); |
| SkPaint paint; |
| - paint.setXfermode(xfer)->unref(); |
| + if ((k - K) % 2 != 0) { |
| + // Test out an arithmode filter created as an xfermode image filter |
| + SkAutoTUnref<SkImageFilter> background(new SkBitmapSource(dst)); |
| + SkXfermode* xfer = SkArithmeticMode::Create(0, one, one, 0); |
|
reed1
2013/05/30 20:42:44
I think this xfer leaks, and it makes us leak the
Stephen White
2013/05/30 20:50:26
Good point. This whole whole section never gets ex
|
| + SkAutoTUnref<SkImageFilter> filter(new SkXfermodeImageFilter(xfer, background)); |
| + paint.setImageFilter(filter); |
| + } else { |
| + paint.setXfermode(xfer)->unref(); |
| + } |
| canvas->drawBitmap(src, x, y, &paint); |
| canvas->restore(); |
| x += gap; |