From 0155413c1222945c79e8d39d7dca27e03b52a425 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Mon, 12 Jan 2026 17:28:19 +0800 Subject: [PATCH] [feat] use reliable transmission to send control info --- src/gui/panels/remote_peer_panel.cpp | 1 + src/gui/render.cpp | 5 +++-- src/gui/render.h | 1 + src/gui/toolbars/control_bar.cpp | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gui/panels/remote_peer_panel.cpp b/src/gui/panels/remote_peer_panel.cpp index 804927d..3047bb6 100644 --- a/src/gui/panels/remote_peer_panel.cpp +++ b/src/gui/panels/remote_peer_panel.cpp @@ -207,6 +207,7 @@ int Render::ConnectTo(const std::string& remote_id, const char* password, } AddAudioStream(props->peer_, props->audio_label_.c_str()); AddDataStream(props->peer_, props->data_label_.c_str(), false); + AddDataStream(props->peer_, props->control_data_label_.c_str(), true); AddDataStream(props->peer_, props->file_label_.c_str(), true); AddDataStream(props->peer_, props->file_feedback_label_.c_str(), true); AddDataStream(props->peer_, props->clipboard_label_.c_str(), true); diff --git a/src/gui/render.cpp b/src/gui/render.cpp index 612e333..d8f2336 100644 --- a/src/gui/render.cpp +++ b/src/gui/render.cpp @@ -716,6 +716,7 @@ int Render::CreateConnectionPeer() { AddAudioStream(peer_, audio_label_.c_str()); AddDataStream(peer_, data_label_.c_str(), false); + AddDataStream(peer_, control_data_label_.c_str(), true); AddDataStream(peer_, file_label_.c_str(), true); AddDataStream(peer_, file_feedback_label_.c_str(), true); AddDataStream(peer_, clipboard_label_.c_str(), true); @@ -1375,8 +1376,8 @@ void Render::MainLoop() { remote_action.i.host_name_size = host_name.size(); std::string msg = remote_action.to_json(); - int ret = - SendDataFrame(peer_, msg.data(), msg.size(), data_label_.c_str()); + int ret = SendDataFrame(peer_, msg.data(), msg.size(), + control_data_label_.c_str()); FreeRemoteAction(remote_action); if (0 == ret) { need_to_send_host_info_ = false; diff --git a/src/gui/render.h b/src/gui/render.h index abf05df..4408ad5 100644 --- a/src/gui/render.h +++ b/src/gui/render.h @@ -48,6 +48,7 @@ class Render { std::string audio_label_ = "control_audio"; std::string data_label_ = "control_data"; std::string file_label_ = "file"; + std::string control_data_label_ = "control_data"; std::string file_feedback_label_ = "file_feedback"; std::string clipboard_label_ = "clipboard"; std::string local_id_ = ""; diff --git a/src/gui/toolbars/control_bar.cpp b/src/gui/toolbars/control_bar.cpp index e1f8634..b62ee22 100644 --- a/src/gui/toolbars/control_bar.cpp +++ b/src/gui/toolbars/control_bar.cpp @@ -96,7 +96,7 @@ int Render::ControlBar(std::shared_ptr& props) { if (props->connection_status_ == ConnectionStatus::Connected) { std::string msg = remote_action.to_json(); SendDataFrame(props->peer_, msg.c_str(), msg.size(), - props->data_label_.c_str()); + props->control_data_label_.c_str()); } } props->display_selectable_hovered_ = ImGui::IsWindowHovered(); @@ -177,7 +177,7 @@ int Render::ControlBar(std::shared_ptr& props) { remote_action.a = props->audio_capture_button_pressed_; std::string msg = remote_action.to_json(); SendDataFrame(props->peer_, msg.c_str(), msg.size(), - props->data_label_.c_str()); + props->control_data_label_.c_str()); } }