Merge "Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf."

This commit is contained in:
Brian Carlstrom
2013-12-05 06:20:48 +00:00
committed by Gerrit Code Review

View File

@@ -547,16 +547,20 @@ jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
jbyteArray arrayObj = (jbyteArray) env->CallObjectMethod(gVMRuntime, jbyteArray arrayObj = (jbyteArray) env->CallObjectMethod(gVMRuntime,
gVMRuntime_newNonMovableArray, gVMRuntime_newNonMovableArray,
gByte_class, size); gByte_class, size);
if (arrayObj) { if (env->ExceptionCheck() != 0) {
return NULL;
}
SkASSERT(arrayObj);
jbyte* addr = (jbyte*) env->CallLongMethod(gVMRuntime, gVMRuntime_addressOf, arrayObj); jbyte* addr = (jbyte*) env->CallLongMethod(gVMRuntime, gVMRuntime_addressOf, arrayObj);
if (addr) { if (env->ExceptionCheck() != 0) {
return NULL;
}
SkASSERT(addr);
SkPixelRef* pr = new AndroidPixelRef(env, (void*) addr, size, arrayObj, ctable); SkPixelRef* pr = new AndroidPixelRef(env, (void*) addr, size, arrayObj, ctable);
bitmap->setPixelRef(pr)->unref(); bitmap->setPixelRef(pr)->unref();
// since we're already allocated, we lockPixels right away // since we're already allocated, we lockPixels right away
// HeapAllocator behaves this way too // HeapAllocator behaves this way too
bitmap->lockPixels(); bitmap->lockPixels();
}
}
return arrayObj; return arrayObj;
} }