From ea12150b5b386d36312ff178b43c780a78f901b0 Mon Sep 17 00:00:00 2001 From: Jorge Betancourt Date: Thu, 14 Nov 2024 06:02:45 +0000 Subject: guard new Xfermode API usage in Paint Flag: com.android.graphics.hwui.flags.runtime_color_filters_blenders Test: atest CtsUiRenderingTestCases:RuntimeXfermodeTests Bug: b/358126864 Change-Id: I74088b551eb4b313d81310e2cfaceaeeee1b8cda --- graphics/java/android/graphics/Paint.java | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index 2c166c32ba50..9bf4d65e1865 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -836,11 +836,13 @@ public class Paint { mNativeColorFilter = newNativeColorFilter; nSetColorFilter(mNativePaint, mNativeColorFilter); } - if (mXfermode instanceof RuntimeXfermode) { - long newNativeXfermode = ((RuntimeXfermode) mXfermode).createNativeInstance(); - if (newNativeXfermode != mNativeXfermode) { - mNativeXfermode = newNativeXfermode; - nSetXfermode(mNativePaint, mNativeXfermode); + if (com.android.graphics.hwui.flags.Flags.runtimeColorFiltersBlenders()) { + if (mXfermode instanceof RuntimeXfermode) { + long newNativeXfermode = ((RuntimeXfermode) mXfermode).createNativeInstance(); + if (newNativeXfermode != mNativeXfermode) { + mNativeXfermode = newNativeXfermode; + nSetXfermode(mNativePaint, mNativeXfermode); + } } } return mNativePaint; @@ -1470,10 +1472,12 @@ public class Paint { @Nullable private Xfermode installXfermode(Xfermode xfermode) { - if (xfermode instanceof RuntimeXfermode) { - mXfermode = xfermode; - nSetXfermode(mNativePaint, ((RuntimeXfermode) xfermode).createNativeInstance()); - return xfermode; + if (com.android.graphics.hwui.flags.Flags.runtimeColorFiltersBlenders()) { + if (xfermode instanceof RuntimeXfermode) { + mXfermode = xfermode; + nSetXfermode(mNativePaint, ((RuntimeXfermode) xfermode).createNativeInstance()); + return xfermode; + } } int newMode = (xfermode instanceof PorterDuffXfermode) ? ((PorterDuffXfermode) xfermode).porterDuffMode : PorterDuffXfermode.DEFAULT; -- cgit v1.2.3-59-g8ed1b