Fix Cleanup on ChiakiSession Init Fail on Android

This commit is contained in:
Florian Märkl 2019-10-05 15:17:59 +02:00
commit df6d0a7ede
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
2 changed files with 22 additions and 3 deletions

View file

@ -275,7 +275,12 @@ JNIEXPORT void JNICALL Java_com_metallic_chiaki_lib_ChiakiNative_sessionCreate(J
err = chiaki_session_init(&session->session, &connect_info, &global_log);
if(err != CHIAKI_ERR_SUCCESS)
{
// TODO: free audio and video decoders and session (?)
CHIAKI_LOGE(&global_log, "JNI ChiakiSession failed to init");
android_chiaki_video_decoder_fini(&session->video_decoder);
android_chiaki_audio_decoder_fini(&session->audio_decoder);
android_chiaki_audio_output_free(session->audio_output);
free(session);
session = NULL;
goto beach;
}
@ -390,6 +395,8 @@ static void android_discovery_service_cb(ChiakiDiscoveryHost *hosts, size_t host
{
AndroidDiscoveryService *service = user;
CHIAKI_LOGI(&global_log, "JNI Discovery Callback got %llu hosts", (unsigned long long)hosts_count);
JNIEnv *env = attach_thread_jni();
if(!env)
return;

View file

@ -149,6 +149,10 @@ class StreamActivity : AppCompatActivity()
dialog = null
reconnect()
}
.setOnDismissListener {
dialog = null
finish()
}
.setNegativeButton(R.string.action_quit_session) { _, _ ->
dialog = null
finish()
@ -166,6 +170,10 @@ class StreamActivity : AppCompatActivity()
dialog?.dismiss()
val dialog = AlertDialog.Builder(this)
.setMessage(getString(R.string.alert_message_session_create_error, state.error.errorCode.toString()))
.setOnDismissListener {
dialog = null
finish()
}
.setNegativeButton(R.string.action_quit_session) { _, _ ->
dialog = null
finish()
@ -193,11 +201,15 @@ class StreamActivity : AppCompatActivity()
R.string.alert_message_login_pin_request)
.setView(view)
.setPositiveButton(R.string.action_login_pin_connect) { _, _ ->
this.dialog = null
dialog = null
viewModel.session.setLoginPin(pinEditText.text.toString())
}
.setOnDismissListener {
dialog = null
finish()
}
.setNegativeButton(R.string.action_quit_session) { _, _ ->
this.dialog = null
dialog = null
finish()
}
.create()