[fix] fix leave transmission error when exit program

This commit is contained in:
dijunkun
2024-08-07 17:33:05 +08:00
parent ec23656334
commit 50d92a763a
4 changed files with 11 additions and 5 deletions

View File

@@ -181,7 +181,7 @@ int Render::LocalWindow() {
regenerate_password_ = true; regenerate_password_ = true;
password_inited_ = false; password_inited_ = false;
regenerate_password_start_time_ = ImGui::GetTime(); regenerate_password_start_time_ = ImGui::GetTime();
LeaveConnection(peer_); LeaveConnection(peer_, client_id_);
is_create_connection_ = false; is_create_connection_ = false;
} }
if (ImGui::GetTime() - regenerate_password_start_time_ > 0.3f) { if (ImGui::GetTime() - regenerate_password_start_time_ > 0.3f) {

View File

@@ -87,6 +87,8 @@ int Render::SaveSettingsIntoCacheFile() {
fwrite(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_); fwrite(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_);
fclose(cd_cache_file_); fclose(cd_cache_file_);
LOG_INFO("Save settings into cache file");
return 0; return 0;
} }
@@ -114,6 +116,8 @@ int Render::LoadSettingsIntoCacheFile() {
(ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_);
config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_);
LOG_INFO("Load settings into cache file");
return 0; return 0;
} }
@@ -492,7 +496,8 @@ int Render::Run() {
if (streaming_) { if (streaming_) {
LOG_INFO("Return to main interface"); LOG_INFO("Return to main interface");
streaming_ = false; 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; rejoin_ = false;
memset(audio_buffer_, 0, 960); memset(audio_buffer_, 0, 960);
connection_established_ = false; connection_established_ = false;
@@ -579,7 +584,8 @@ int Render::Run() {
// Cleanup // Cleanup
if (is_create_connection_) { if (is_create_connection_) {
LeaveConnection(peer_); LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_);
LeaveConnection(peer_, client_id_);
is_client_mode_ = false; is_client_mode_ = false;
} }

View File

@@ -235,7 +235,7 @@ void Render::NetStatusReport(int TransmissionId, TraversalMode mode,
const unsigned short send, const unsigned short send,
const unsigned short receive, void *user_data) { const unsigned short receive, void *user_data) {
Render *render = (Render *)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); std::string client_id = std::to_string(TransmissionId);
strncpy(render->client_id_, client_id.c_str(), sizeof(client_id)); strncpy(render->client_id_, client_id.c_str(), sizeof(client_id));
render->SaveSettingsIntoCacheFile(); render->SaveSettingsIntoCacheFile();