Index: gm/xferu64.cpp |
diff --git a/gm/xferu64.cpp b/gm/xferu64.cpp |
index 03fc8864b56876eac812082e246f54e3bb6c0bb4..a72735f96d7ef7739429fa0885155983afe1d5be 100644 |
--- a/gm/xferu64.cpp |
+++ b/gm/xferu64.cpp |
@@ -71,10 +71,13 @@ static void draw_rect(SkCanvas* canvas, const SkRect& r, SkColor c, uint32_t u64 |
u64_flags |= SkXfermode::kSrcIsOpaque_PM4fFlag; |
} |
- const SkXfermode::U64State state { nullptr, u64_flags }; |
+ SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode; |
+ SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(mode)); |
+ |
+ const SkXfermode::U64State state { xfer, u64_flags }; |
const SkPM4f src = SkColor4f::FromColor(c).premul(); |
- auto proc1 = SkXfermode::GetU64Proc1(SkXfermode::kSrcOver_Mode, u64_flags); |
+ auto proc1 = SkXfermode::GetU64Proc1(mode, u64_flags); |
for (int y = 0; y < ir.height()/2; ++y) { |
proc1(state, pm.writable_addr64(0, y), src, ir.width(), aa); |
} |
@@ -83,7 +86,7 @@ static void draw_rect(SkCanvas* canvas, const SkRect& r, SkColor c, uint32_t u64 |
for (int i = 0; i < ir.width(); ++i) { |
buffer[i] = src; |
} |
- auto procN = SkXfermode::GetU64ProcN(SkXfermode::kSrcOver_Mode, u64_flags); |
+ auto procN = SkXfermode::GetU64ProcN(mode, u64_flags); |
for (int y = ir.height()/2 + 1; y < ir.height(); ++y) { |
procN(state, pm.writable_addr64(0, y), buffer, ir.width(), aa); |
} |