diff --git a/lib/installer-exclude/libjitsi.jar b/lib/installer-exclude/libjitsi.jar index fcb46ffba..fa8c5e818 100644 Binary files a/lib/installer-exclude/libjitsi.jar and b/lib/installer-exclude/libjitsi.jar differ diff --git a/lib/native/windows-64/jnportaudio.dll b/lib/native/windows-64/jnportaudio.dll index 315f68381..c544a17a9 100644 Binary files a/lib/native/windows-64/jnportaudio.dll and b/lib/native/windows-64/jnportaudio.dll differ diff --git a/lib/native/windows/jnportaudio.dll b/lib/native/windows/jnportaudio.dll index 04dc752de..00c250221 100644 Binary files a/lib/native/windows/jnportaudio.dll and b/lib/native/windows/jnportaudio.dll differ diff --git a/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.c b/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.c index f93e88a5c..629025b80 100644 --- a/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.c +++ b/src/native/portaudio/net_java_sip_communicator_impl_neomedia_portaudio_PortAudio.c @@ -1238,8 +1238,51 @@ PortAudio_throwException(JNIEnv *env, PaError errorCode) { jclass clazz = (*env)->FindClass( - env, - "net/java/sip/communicator/impl/neomedia/portaudio/PortAudioException"); + env, + "net/java/sip/communicator/impl/neomedia/portaudio/PortAudioException"); + + if(errorCode == paUnanticipatedHostError) + { + // throw new exception with host error info + const PaHostErrorInfo* herr = Pa_GetLastHostErrorInfo(); + if (herr) + { + jmethodID methodID + = (*env)->GetMethodID( + env, + clazz, + "", + "(Ljava/lang/String;IJLjava/lang/String;)V"); + + if (methodID) + { + jstring jmessage; + if (herr->errorText) + jmessage = (*env)->NewStringUTF(env, herr->errorText); + else + jmessage = (*env)->NewStringUTF(env, ""); + + if (jmessage) + { + jobject t + = (*env)->NewObject( + env, + clazz, + methodID, + Pa_GetErrorText(errorCode), + herr->hostApiType, + herr->errorCode, + jmessage); + + if (t) + { + (*env)->Throw(env, (jthrowable) t); + return; + } + } + } + } + } if (clazz) (*env)->ThrowNew(env, clazz, Pa_GetErrorText(errorCode));