summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/src/pj/os_core_unix.c18
-rw-r--r--pjmedia/src/pjmedia-audiodev/android_jni_dev.c15
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 <jni.h>
+
+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 */