From c4a2e84c3b6dbfd34ecd9d1f44cf032b437139fd Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Mon, 24 Dec 2018 07:29:48 +0330 Subject: Fix Operation Progress Listener on Android (#1787) * feat(IMAPSession): add support for moveMessagesOpeation to java library * feat: support fieldClass in getObjectField * fix: use global reference of progress listener pass progress values to callback function --- src/java/JavaHandle.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/java/JavaHandle.cpp') diff --git a/src/java/JavaHandle.cpp b/src/java/JavaHandle.cpp index 1bf799e3..fdefc49a 100644 --- a/src/java/JavaHandle.cpp +++ b/src/java/JavaHandle.cpp @@ -2,15 +2,15 @@ using namespace mailcore; -static jfieldID getField(JNIEnv * env, jobject obj, const char * fieldName) +static jfieldID getField(JNIEnv * env, jobject obj, const char * fieldName, const char * fieldClass) { jclass c = env->GetObjectClass(obj); - return env->GetFieldID(c, fieldName, "J"); + return env->GetFieldID(c, fieldName, fieldClass); } static jfieldID getHandleField(JNIEnv * env, jobject obj) { - return getField(env, obj, "nativeHandle"); + return getField(env, obj, "nativeHandle", "J"); } void * mailcore::getHandle(JNIEnv * env, jobject obj) @@ -27,17 +27,17 @@ void mailcore::setHandle(JNIEnv *env, jobject obj, void *t) void * mailcore::getCustomHandle(JNIEnv * env, jobject obj, const char * fieldName) { - jlong handle = env->GetLongField(obj, getField(env, obj, fieldName)); + jlong handle = env->GetLongField(obj, getField(env, obj, fieldName, "J")); return (void *) handle; } void mailcore::setCustomHandle(JNIEnv *env, jobject obj, const char * fieldName, void *t) { jlong handle = reinterpret_cast(t); - env->SetLongField(obj, getField(env, obj, fieldName), handle); + env->SetLongField(obj, getField(env, obj, fieldName, "J"), handle); } -jobject mailcore::getObjectField(JNIEnv *env, jobject obj, const char * fieldName) +jobject mailcore::getObjectField(JNIEnv *env, jobject obj, const char * fieldName, const char * fieldClass) { - return env->GetObjectField(obj, getField(env, obj, fieldName)); + return env->GetObjectField(obj, getField(env, obj, fieldName, fieldClass)); } \ No newline at end of file -- cgit v1.2.3