From 76631c2519ae0dc653828d2eda184271cedd5aae Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Tue, 23 Sep 2014 04:13:40 +0000 Subject: Fixed #1792: Create generic JNI OnLoad function git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4927 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pj/os_core_unix.c | 18 ++++++++++++++++++ pjmedia/src/pjmedia-audiodev/android_jni_dev.c | 15 ++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c index 34a1f48d..9f8578a1 100644 --- a/pjlib/src/pj/os_core_unix.c +++ b/pjlib/src/pj/os_core_unix.c @@ -49,6 +49,24 @@ #define SIGNATURE1 0xDEAFBEEF #define SIGNATURE2 0xDEADC0DE +#ifndef PJ_JNI_HAS_JNI_ONLOAD +# define PJ_JNI_HAS_JNI_ONLOAD PJ_ANDROID +#endif + +#if defined(PJ_JNI_HAS_JNI_ONLOAD) && PJ_JNI_HAS_JNI_ONLOAD != 0 + +#include + +JavaVM *pj_jni_jvm = NULL; + +JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) +{ + pj_jni_jvm = vm; + + return JNI_VERSION_1_4; +} +#endif + struct pj_thread_t { char obj_name[PJ_MAX_OBJ_NAME]; diff --git a/pjmedia/src/pjmedia-audiodev/android_jni_dev.c b/pjmedia/src/pjmedia-audiodev/android_jni_dev.c index 1ee46224..4a4fc48f 100644 --- a/pjmedia/src/pjmedia-audiodev/android_jni_dev.c +++ b/pjmedia/src/pjmedia-audiodev/android_jni_dev.c @@ -141,21 +141,14 @@ static pjmedia_aud_stream_op android_strm_op = &strm_destroy }; -JavaVM *android_jvm; - -JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) -{ - android_jvm = vm; - - return JNI_VERSION_1_4; -} +extern JavaVM *pj_jni_jvm; static pj_bool_t attach_jvm(JNIEnv **jni_env) { - if ((*android_jvm)->GetEnv(android_jvm, (void **)jni_env, + if ((*pj_jni_jvm)->GetEnv(pj_jni_jvm, (void **)jni_env, JNI_VERSION_1_4) < 0) { - if ((*android_jvm)->AttachCurrentThread(android_jvm, jni_env, NULL) < 0) + if ((*pj_jni_jvm)->AttachCurrentThread(pj_jni_jvm, jni_env, NULL) < 0) { jni_env = NULL; return PJ_FALSE; @@ -168,7 +161,7 @@ static pj_bool_t attach_jvm(JNIEnv **jni_env) #define detach_jvm(attached) \ if (attached) \ - (*android_jvm)->DetachCurrentThread(android_jvm); + (*pj_jni_jvm)->DetachCurrentThread(pj_jni_jvm); /* Thread priority utils */ /* TODO : port it to pj_thread functions */ -- cgit v1.2.3