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
diff --git a/graphics/java/android/graphics/Gainmap.java b/graphics/java/android/graphics/Gainmap.java
index 470a06c..a7c508c 100644
--- a/graphics/java/android/graphics/Gainmap.java
+++ b/graphics/java/android/graphics/Gainmap.java
@@ -96,8 +96,8 @@
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 cbebae9..ecf6cfc 100644
--- a/libs/hwui/hwui/Bitmap.cpp
+++ b/libs/hwui/hwui/Bitmap.cpp
@@ -464,7 +464,7 @@
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 0000000..823f14e
--- /dev/null
+++ b/tests/SilkFX/assets/gainmaps/granddam.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/lightbulb.jpg b/tests/SilkFX/assets/gainmaps/lightbulb.jpg
new file mode 100644
index 0000000..232c5f0
--- /dev/null
+++ b/tests/SilkFX/assets/gainmaps/lightbulb.jpg
Binary files differ
diff --git a/tests/SilkFX/assets/gainmaps/porsche911.jpg b/tests/SilkFX/assets/gainmaps/porsche911.jpg
new file mode 100644
index 0000000..50f4fc8
--- /dev/null
+++ b/tests/SilkFX/assets/gainmaps/porsche911.jpg
Binary files differ