- Minor baresip.c cleanup.
This commit is contained in:
+25
-42
@@ -21,18 +21,16 @@
|
|||||||
|
|
||||||
typedef struct baresip_context {
|
typedef struct baresip_context {
|
||||||
JavaVM *javaVM;
|
JavaVM *javaVM;
|
||||||
jclass jniHelperClz;
|
JNIEnv *env;
|
||||||
jobject jniHelperObj;
|
jclass mainActivityClz;
|
||||||
jclass mainActivityClz;
|
jobject mainActivityObj;
|
||||||
jobject mainActivityObj;
|
|
||||||
} BaresipContext;
|
} BaresipContext;
|
||||||
|
|
||||||
BaresipContext g_ctx;
|
BaresipContext g_ctx;
|
||||||
|
|
||||||
struct play *play = NULL;
|
struct play *play = NULL;
|
||||||
|
|
||||||
static int vprintf_null(const char *p, size_t size, void *arg)
|
static int vprintf_null(const char *p, size_t size, void *arg) {
|
||||||
{
|
|
||||||
(void)p;
|
(void)p;
|
||||||
(void)size;
|
(void)size;
|
||||||
(void)arg;
|
(void)arg;
|
||||||
@@ -187,30 +185,30 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev,
|
|||||||
break;
|
break;
|
||||||
case UA_EVENT_AUDIO_ERROR:
|
case UA_EVENT_AUDIO_ERROR:
|
||||||
mem_deref(call);
|
mem_deref(call);
|
||||||
goto out;
|
return;
|
||||||
default:
|
default:
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len == -1) {
|
if (len == -1) {
|
||||||
LOGE("failed to print event to buffer\n");
|
LOGE("failed to print event to buffer\n");
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
event = event_buf;
|
event = event_buf;
|
||||||
|
|
||||||
BaresipContext *pctx = (BaresipContext*)(&g_ctx);
|
JavaVM *javaVM = g_ctx.javaVM;
|
||||||
JavaVM *javaVM = pctx->javaVM;
|
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
jint res = (*javaVM)->GetEnv(javaVM, (void**)&env, JNI_VERSION_1_6);
|
jint res = (*javaVM)->GetEnv(javaVM, (void**)&env, JNI_VERSION_1_6);
|
||||||
if (res != JNI_OK) {
|
if (res != JNI_OK) {
|
||||||
res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL);
|
res = (*javaVM)->AttachCurrentThread(javaVM, &env, NULL);
|
||||||
if (JNI_OK != res) {
|
if (JNI_OK != res) {
|
||||||
LOGE("failed to AttachCurrentThread, ErrorCode = %d\n", res);
|
LOGE("failed to AttachCurrentThread, ErrorCode = %d\n", res);
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
jmethodID methodId = (*env)->GetMethodID(env, pctx->mainActivityClz,
|
|
||||||
|
jmethodID methodId = (*env)->GetMethodID(env, g_ctx.mainActivityClz,
|
||||||
"uaEvent",
|
"uaEvent",
|
||||||
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
|
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
|
||||||
sprintf(ua_buf, "%lu", (unsigned long)ua);
|
sprintf(ua_buf, "%lu", (unsigned long)ua);
|
||||||
@@ -219,13 +217,11 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev,
|
|||||||
jstring javaCall = (*env)->NewStringUTF(env, call_buf);
|
jstring javaCall = (*env)->NewStringUTF(env, call_buf);
|
||||||
jstring javaEvent = (*env)->NewStringUTF(env, event);
|
jstring javaEvent = (*env)->NewStringUTF(env, event);
|
||||||
LOGD("sending ua/call %s/%s event %s\n", ua_buf, call_buf, event);
|
LOGD("sending ua/call %s/%s event %s\n", ua_buf, call_buf, event);
|
||||||
(*env)->CallVoidMethod(env, pctx->mainActivityObj, methodId, javaEvent, javaUA, javaCall);
|
(*env)->CallVoidMethod(env, g_ctx.mainActivityObj, methodId, javaEvent, javaUA, javaCall);
|
||||||
(*env)->DeleteLocalRef(env, javaUA);
|
(*env)->DeleteLocalRef(env, javaUA);
|
||||||
(*env)->DeleteLocalRef(env, javaCall);
|
(*env)->DeleteLocalRef(env, javaCall);
|
||||||
(*env)->DeleteLocalRef(env, javaEvent);
|
(*env)->DeleteLocalRef(env, javaEvent);
|
||||||
|
|
||||||
out:
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void message_handler(struct ua *ua, const struct pl *peer, const struct pl *ctype,
|
static void message_handler(struct ua *ua, const struct pl *peer, const struct pl *ctype,
|
||||||
@@ -320,10 +316,9 @@ static struct mqueue *mq;
|
|||||||
|
|
||||||
static void mqueue_handler(int id, void *data, void *arg)
|
static void mqueue_handler(int id, void *data, void *arg)
|
||||||
{
|
{
|
||||||
switch (id) {
|
if (id == ID_UA_STOP_ALL) {
|
||||||
case ID_UA_STOP_ALL:
|
LOGD("calling ua_stop_all with force %u\n", (unsigned)data);
|
||||||
LOGD("calling ua_stop_all with force %u\n", (unsigned)data);
|
ua_stop_all((bool)data);
|
||||||
ua_stop_all((bool)data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,24 +360,14 @@ static int runLoggingThread() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
|
||||||
JNIEnv* env;
|
|
||||||
|
|
||||||
LOGD("Executing JNI_OnLoad\n");
|
LOGD("at JNI_OnLoad\n");
|
||||||
|
|
||||||
memset(&g_ctx, 0, sizeof(g_ctx));
|
memset(&g_ctx, 0, sizeof(g_ctx));
|
||||||
|
|
||||||
g_ctx.javaVM = vm;
|
g_ctx.javaVM = vm;
|
||||||
if ((*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_6) != JNI_OK) {
|
g_ctx.env = NULL;
|
||||||
return JNI_ERR; // JNI version not supported.
|
g_ctx.mainActivityClz = NULL;
|
||||||
}
|
|
||||||
|
|
||||||
jclass clz = (*env)->FindClass(env, "com/tutpro/baresip/MainActivity");
|
|
||||||
g_ctx.jniHelperClz = (*env)->NewGlobalRef(env, clz);
|
|
||||||
|
|
||||||
jmethodID jniHelperCtor = (*env)->GetMethodID(env, g_ctx.jniHelperClz, "<init>", "()V");
|
|
||||||
jobject handler = (*env)->NewObject(env, g_ctx.jniHelperClz, jniHelperCtor);
|
|
||||||
g_ctx.jniHelperObj = (*env)->NewGlobalRef(env, handler);
|
|
||||||
|
|
||||||
g_ctx.mainActivityObj = NULL;
|
g_ctx.mainActivityObj = NULL;
|
||||||
|
|
||||||
return JNI_VERSION_1_6;
|
return JNI_VERSION_1_6;
|
||||||
@@ -391,12 +376,11 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
|
|||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_com_tutpro_baresip_BaresipService_baresipStart(JNIEnv *env, jobject instance, jstring javaPath) {
|
Java_com_tutpro_baresip_BaresipService_baresipStart(JNIEnv *env, jobject instance, jstring javaPath) {
|
||||||
|
|
||||||
LOGD("Starting baresip\n");
|
LOGD("starting baresip\n");
|
||||||
|
|
||||||
char start_error[64] = "";
|
char start_error[64] = "";
|
||||||
|
|
||||||
BaresipContext *pctx = (BaresipContext *)(&g_ctx);
|
JavaVM *javaVM = g_ctx.javaVM;
|
||||||
JavaVM *javaVM = pctx->javaVM;
|
|
||||||
jint res = (*javaVM)->GetEnv(javaVM, (void **) &env, JNI_VERSION_1_6);
|
jint res = (*javaVM)->GetEnv(javaVM, (void **) &env, JNI_VERSION_1_6);
|
||||||
if (res != JNI_OK) {
|
if (res != JNI_OK) {
|
||||||
LOGE("failed to GetEnv, ErrorCode = %d", res);
|
LOGE("failed to GetEnv, ErrorCode = %d", res);
|
||||||
@@ -405,6 +389,7 @@ Java_com_tutpro_baresip_BaresipService_baresipStart(JNIEnv *env, jobject instanc
|
|||||||
jclass clz = (*env)->GetObjectClass(env, instance);
|
jclass clz = (*env)->GetObjectClass(env, instance);
|
||||||
g_ctx.mainActivityClz = (*env)->NewGlobalRef(env, clz);
|
g_ctx.mainActivityClz = (*env)->NewGlobalRef(env, clz);
|
||||||
g_ctx.mainActivityObj = (*env)->NewGlobalRef(env, instance);
|
g_ctx.mainActivityObj = (*env)->NewGlobalRef(env, instance);
|
||||||
|
g_ctx.env = env;
|
||||||
|
|
||||||
int err;
|
int err;
|
||||||
const char *path = (*env)->GetStringUTFChars(env, javaPath, 0);
|
const char *path = (*env)->GetStringUTFChars(env, javaPath, 0);
|
||||||
@@ -475,9 +460,9 @@ Java_com_tutpro_baresip_BaresipService_baresipStart(JNIEnv *env, jobject instanc
|
|||||||
sprintf(ua_buf, "%lu", (unsigned long) ua);
|
sprintf(ua_buf, "%lu", (unsigned long) ua);
|
||||||
jstring javaUA = (*env)->NewStringUTF(env, ua_buf);
|
jstring javaUA = (*env)->NewStringUTF(env, ua_buf);
|
||||||
LOGD("adding UA for AoR %s/%s\n", ua_aor(ua), ua_buf);
|
LOGD("adding UA for AoR %s/%s\n", ua_aor(ua), ua_buf);
|
||||||
jmethodID uaAddId = (*env)->GetMethodID(env, pctx->mainActivityClz, "uaAdd",
|
jmethodID uaAddId = (*env)->GetMethodID(env, g_ctx.mainActivityClz, "uaAdd",
|
||||||
"(Ljava/lang/String;)V");
|
"(Ljava/lang/String;)V");
|
||||||
(*env)->CallVoidMethod(env, pctx->mainActivityObj, uaAddId, javaUA);
|
(*env)->CallVoidMethod(env, g_ctx.mainActivityObj, uaAddId, javaUA);
|
||||||
(*env)->DeleteLocalRef(env, javaUA);
|
(*env)->DeleteLocalRef(env, javaUA);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -528,19 +513,17 @@ Java_com_tutpro_baresip_BaresipService_baresipStart(JNIEnv *env, jobject instanc
|
|||||||
|
|
||||||
LOGD("tell main that baresip has stopped");
|
LOGD("tell main that baresip has stopped");
|
||||||
jstring javaError = (*env)->NewStringUTF(env, start_error);
|
jstring javaError = (*env)->NewStringUTF(env, start_error);
|
||||||
jmethodID stoppedId = (*env)->GetMethodID(env, pctx->mainActivityClz, "stopped",
|
jmethodID stoppedId = (*env)->GetMethodID(env, g_ctx.mainActivityClz, "stopped",
|
||||||
"(Ljava/lang/String;)V");
|
"(Ljava/lang/String;)V");
|
||||||
(*env)->CallVoidMethod(env, pctx->mainActivityObj, stoppedId, javaError);
|
(*env)->CallVoidMethod(env, g_ctx.mainActivityObj, stoppedId, javaError);
|
||||||
(*env)->DeleteLocalRef(env, javaError);
|
(*env)->DeleteLocalRef(env, javaError);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_com_tutpro_baresip_BaresipService_baresipStop(JNIEnv *env, jobject thiz, jboolean force) {
|
Java_com_tutpro_baresip_BaresipService_baresipStop(JNIEnv *env, jobject thiz, jboolean force) {
|
||||||
LOGD("ua_stop_all upon baresipStop");
|
LOGD("ua_stop_all upon baresipStop");
|
||||||
mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force));
|
mqueue_push(mq, ID_UA_STOP_ALL, (void *)((long)force));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jstring JNICALL
|
JNIEXPORT jstring JNICALL
|
||||||
|
|||||||
Reference in New Issue
Block a user