From 9eb7779ae052d2566268b81e884f243d65ecbb7d Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 16 Feb 2023 21:53:50 -0500 Subject: Fix null deref & update compress Gainmap ctor always sets the native bitmap properly, avoids potential confusion over mGainmapContents vs. native bitmap pointer Also call the fancier newer compress function Test: SilkFX Bug: 266628247 Change-Id: I89728a66202b4cdad54e8f163bc04dc419b8187b --- graphics/java/android/graphics/Gainmap.java | 2 +- libs/hwui/hwui/Bitmap.cpp | 2 +- tests/SilkFX/assets/gainmaps/granddam.jpg | Bin 0 -> 1830308 bytes tests/SilkFX/assets/gainmaps/lightbulb.jpg | Bin 0 -> 2757109 bytes tests/SilkFX/assets/gainmaps/porsche911.jpg | Bin 0 -> 2869087 bytes 5 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 tests/SilkFX/assets/gainmaps/granddam.jpg create mode 100644 tests/SilkFX/assets/gainmaps/lightbulb.jpg create mode 100644 tests/SilkFX/assets/gainmaps/porsche911.jpg diff --git a/graphics/java/android/graphics/Gainmap.java b/graphics/java/android/graphics/Gainmap.java index 470a06c1f1f5..a7c508c75ac9 100644 --- a/graphics/java/android/graphics/Gainmap.java +++ b/graphics/java/android/graphics/Gainmap.java @@ -96,8 +96,8 @@ public final class Gainmap implements Parcelable { throw new RuntimeException("internal error: native gainmap is 0"); } - mGainmapContents = gainmapContents; mNativePtr = nativeGainmap; + setGainmapContents(gainmapContents); NoImagePreloadHolder.sRegistry.registerNativeAllocation(this, nativeGainmap); } diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index cbebae9ed438..ecf6cfc05444 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -464,7 +464,7 @@ bool Bitmap::compress(JavaCompressFormat format, int32_t quality, SkWStream* str SkBitmap baseBitmap = getSkBitmap(); SkBitmap gainmapBitmap = gainmap()->bitmap->getSkBitmap(); SkJpegEncoder::Options options{.fQuality = quality}; - return SkJpegGainmapEncoder::EncodeJpegR(stream, baseBitmap.pixmap(), options, + return SkJpegGainmapEncoder::EncodeHDRGM(stream, baseBitmap.pixmap(), options, gainmapBitmap.pixmap(), options, gainmap()->info); } #endif diff --git a/tests/SilkFX/assets/gainmaps/granddam.jpg b/tests/SilkFX/assets/gainmaps/granddam.jpg new file mode 100644 index 000000000000..823f14efcbb2 Binary files /dev/null and b/tests/SilkFX/assets/gainmaps/granddam.jpg differ diff --git a/tests/SilkFX/assets/gainmaps/lightbulb.jpg b/tests/SilkFX/assets/gainmaps/lightbulb.jpg new file mode 100644 index 000000000000..232c5f0937df Binary files /dev/null and b/tests/SilkFX/assets/gainmaps/lightbulb.jpg differ diff --git a/tests/SilkFX/assets/gainmaps/porsche911.jpg b/tests/SilkFX/assets/gainmaps/porsche911.jpg new file mode 100644 index 000000000000..50f4fc83910e Binary files /dev/null and b/tests/SilkFX/assets/gainmaps/porsche911.jpg differ -- cgit v1.2.3-59-g8ed1b