From 50d92a763a8617fdfede4e93931052c869f776e5 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Wed, 7 Aug 2024 17:33:05 +0800 Subject: [PATCH] [fix] fix leave transmission error when exit program --- src/single_window/local_peer_window.cpp | 2 +- src/single_window/render.cpp | 10 ++++++++-- src/single_window/render_callback_func.cpp | 2 +- thirdparty/projectx | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/single_window/local_peer_window.cpp b/src/single_window/local_peer_window.cpp index 1ae03cd..8528148 100644 --- a/src/single_window/local_peer_window.cpp +++ b/src/single_window/local_peer_window.cpp @@ -181,7 +181,7 @@ int Render::LocalWindow() { regenerate_password_ = true; password_inited_ = false; regenerate_password_start_time_ = ImGui::GetTime(); - LeaveConnection(peer_); + LeaveConnection(peer_, client_id_); is_create_connection_ = false; } if (ImGui::GetTime() - regenerate_password_start_time_ > 0.3f) { diff --git a/src/single_window/render.cpp b/src/single_window/render.cpp index bbb1dce..79699a1 100644 --- a/src/single_window/render.cpp +++ b/src/single_window/render.cpp @@ -87,6 +87,8 @@ int Render::SaveSettingsIntoCacheFile() { fwrite(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_); fclose(cd_cache_file_); + LOG_INFO("Save settings into cache file"); + return 0; } @@ -114,6 +116,8 @@ int Render::LoadSettingsIntoCacheFile() { (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); + LOG_INFO("Load settings into cache file"); + return 0; } @@ -492,7 +496,8 @@ int Render::Run() { if (streaming_) { LOG_INFO("Return to main interface"); streaming_ = false; - LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_); + LOG_INFO("[{}] Leave connection [{}]", client_id_, remote_id_); + LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_, remote_id_); rejoin_ = false; memset(audio_buffer_, 0, 960); connection_established_ = false; @@ -579,7 +584,8 @@ int Render::Run() { // Cleanup if (is_create_connection_) { - LeaveConnection(peer_); + LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_); + LeaveConnection(peer_, client_id_); is_client_mode_ = false; } diff --git a/src/single_window/render_callback_func.cpp b/src/single_window/render_callback_func.cpp index cc2c1f8..1539c6b 100644 --- a/src/single_window/render_callback_func.cpp +++ b/src/single_window/render_callback_func.cpp @@ -235,7 +235,7 @@ void Render::NetStatusReport(int TransmissionId, TraversalMode mode, const unsigned short send, const unsigned short receive, void *user_data) { Render *render = (Render *)user_data; - if (TransmissionId != 0) { + if (TransmissionId != 0 && 0 == strcmp(render->client_id_, "")) { std::string client_id = std::to_string(TransmissionId); strncpy(render->client_id_, client_id.c_str(), sizeof(client_id)); render->SaveSettingsIntoCacheFile(); diff --git a/thirdparty/projectx b/thirdparty/projectx index 8dc96ee..dd8ab05 160000 --- a/thirdparty/projectx +++ b/thirdparty/projectx @@ -1 +1 @@ -Subproject commit 8dc96eeb4c7f6cd17408aa4a1442db533a146655 +Subproject commit dd8ab05d0f92186aa55cb4fd6f6e706fd70100a2