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); err = chiaki_session_init(&session->session, &connect_info, &global_log);
if(err != CHIAKI_ERR_SUCCESS) 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; goto beach;
} }
@ -390,6 +395,8 @@ static void android_discovery_service_cb(ChiakiDiscoveryHost *hosts, size_t host
{ {
AndroidDiscoveryService *service = user; AndroidDiscoveryService *service = user;
CHIAKI_LOGI(&global_log, "JNI Discovery Callback got %llu hosts", (unsigned long long)hosts_count);
JNIEnv *env = attach_thread_jni(); JNIEnv *env = attach_thread_jni();
if(!env) if(!env)
return; return;

View file

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