diff options
author | 2020-02-14 14:16:34 -0500 | |
---|---|---|
committer | 2020-02-20 21:50:06 -0500 | |
commit | 15da7e24a5c73f600dc87d103d82f6396b2ef82e (patch) | |
tree | f9a008e3e9ac49dc4e9683a7761ec37eaaaccc3b | |
parent | ee538a3a8578e684b0d04743a3e5904d622960ba (diff) |
Update Region.cpp to use AParcel NDK APIs
Test: CtsGraphicsTestCases
Bug: 145227478
Change-Id: I36f5d3e760bce3c302277c7897c7f8df0ac3cb61
-rw-r--r-- | libs/hwui/Android.bp | 3 | ||||
-rw-r--r-- | libs/hwui/jni/Region.cpp | 20 |
2 files changed, 13 insertions, 10 deletions
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index 1715a279130e..973f857a861c 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -288,7 +288,6 @@ cc_defaults { "jni/PathEffect.cpp", "jni/PathMeasure.cpp", "jni/Picture.cpp", - "jni/Region.cpp", "jni/Shader.cpp", "jni/Typeface.cpp", "jni/Utils.cpp", @@ -334,6 +333,7 @@ cc_defaults { "jni/GraphicsStatsService.cpp", "jni/Movie.cpp", "jni/MovieImpl.cpp", + "jni/Region.cpp", // requires libbinder_ndk "jni/pdf/PdfDocument.cpp", "jni/pdf/PdfEditor.cpp", "jni/pdf/PdfRenderer.cpp", @@ -341,6 +341,7 @@ cc_defaults { ], shared_libs: [ "libandroidfw", + "libbinder_ndk", "libmediandk", "libnativedisplay", "libnativewindow", diff --git a/libs/hwui/jni/Region.cpp b/libs/hwui/jni/Region.cpp index c95bcea57ef5..1e064b820591 100644 --- a/libs/hwui/jni/Region.cpp +++ b/libs/hwui/jni/Region.cpp @@ -19,10 +19,10 @@ #include "GraphicsJNI.h" #ifdef __ANDROID__ // Layoutlib does not support parcel -#include <binder/Parcel.h> +#include <android/binder_parcel.h> +#include <android/binder_parcel_jni.h> +#include <android/binder_parcel_utils.h> #endif -#include "android_os_Parcel.h" -#include "android_util_Binder.h" namespace android { @@ -207,10 +207,11 @@ static jlong Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel) return 0; } - android::Parcel* p = android::parcelForJavaObject(env, parcel); - std::vector<int32_t> rects; - p->readInt32Vector(&rects); + + AParcel* p = AParcel_fromJavaParcel(env, parcel); + ndk::AParcel_readVector(p, &rects); + AParcel_delete(p); if ((rects.size() % 4) != 0) { return 0; @@ -235,8 +236,6 @@ static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, jlong regionHan return JNI_FALSE; } - android::Parcel* p = android::parcelForJavaObject(env, parcel); - std::vector<int32_t> rects; SkRegion::Iterator it(*region); while (!it.done()) { @@ -248,7 +247,10 @@ static jboolean Region_writeToParcel(JNIEnv* env, jobject clazz, jlong regionHan it.next(); } - p->writeInt32Vector(rects); + AParcel* p = AParcel_fromJavaParcel(env, parcel); + ndk::AParcel_writeVector(p, rects); + AParcel_delete(p); + return JNI_TRUE; #else return JNI_FALSE; |