From 62b389411be2d9233eac58cd856bfcb643db0684 Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Mon, 15 Apr 2019 11:59:33 -0400 Subject: [PATCH] Move AlphaFilterCanvas to new API. The AlphaFilterCanvas is only used when it will make a copy of the paint anyway. Remove the need to keep track of copy on write semantics when they are never used. Test: refactoring CL. Existing unit tests still pass. Change-Id: I20c0d618db7d1a76756bd4c16fe686ce7fb44f38 --- libs/hwui/pipeline/skia/RenderNodeDrawable.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp index 1bd30eb5371bd..e65fe3a3b811a 100644 --- a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp +++ b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp @@ -187,17 +187,13 @@ public: AlphaFilterCanvas(SkCanvas* canvas, float alpha) : SkPaintFilterCanvas(canvas), mAlpha(alpha) {} protected: - bool onFilter(SkTCopyOnFirstWrite* paint, Type t) const override { - std::optional defaultPaint; - if (!*paint) { - paint->init(defaultPaint.emplace()); - } - paint->writable()->setAlpha((uint8_t)(*paint)->getAlpha() * mAlpha); + bool onFilter(SkPaint& paint) const override { + paint.setAlpha((uint8_t)paint.getAlpha() * mAlpha); return true; } void onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) override { // We unroll the drawable using "this" canvas, so that draw calls contained inside will - // get their alpha applied. THe default SkPaintFilterCanvas::onDrawDrawable does not unroll. + // get their alpha applied. The default SkPaintFilterCanvas::onDrawDrawable does not unroll. drawable->draw(this, matrix); }