Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90f4c18a authored by Andy McFadden's avatar Andy McFadden
Browse files

Use JNI helper function to get buffer address

This replaces the Get/Release sequence with a call to
jniGetNonMovableArrayElements.

Bug 3409356

Change-Id: I847fd67ac71d904fef0c807ac25a29f802e6cd45
parent 8b166b47
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -502,6 +502,8 @@ void AndroidPixelRef::globalUnref() {

///////////////////////////////////////////////////////////////////////////////

extern "C" jbyte* jniGetNonMovableArrayElements(C_JNIEnv* env, jarray arrayObj);

jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
                                             SkColorTable* ctable) {
    Sk64 size64 = bitmap->getSize64();
@@ -514,8 +516,8 @@ jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
    size_t size = size64.get32();
    jbyteArray arrayObj = env->NewByteArray(size);
    if (arrayObj) {
        jbyte *addr = env->GetByteArrayElements(arrayObj, NULL);
        env->ReleaseByteArrayElements(arrayObj, addr, 0);
        // TODO: make this work without jniGetNonMovableArrayElements
        jbyte* addr = jniGetNonMovableArrayElements(&env->functions, arrayObj);
        if (addr) {
            SkPixelRef* pr = new AndroidPixelRef(env, (void*) addr, size, arrayObj, ctable);
            bitmap->setPixelRef(pr)->unref();