mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-04-10 12:30:37 +08:00
[fix] split mouse and keyboard from data channel and use reliable transimission
This commit is contained in:
@@ -224,6 +224,8 @@ int Render::ConnectTo(const std::string& remote_id, const char* password,
|
|||||||
}
|
}
|
||||||
AddAudioStream(props->peer_, props->audio_label_.c_str());
|
AddAudioStream(props->peer_, props->audio_label_.c_str());
|
||||||
AddDataStream(props->peer_, props->data_label_.c_str(), false);
|
AddDataStream(props->peer_, props->data_label_.c_str(), false);
|
||||||
|
AddDataStream(props->peer_, props->mouse_label_.c_str(), false);
|
||||||
|
AddDataStream(props->peer_, props->keyboard_label_.c_str(), true);
|
||||||
AddDataStream(props->peer_, props->control_data_label_.c_str(), true);
|
AddDataStream(props->peer_, props->control_data_label_.c_str(), true);
|
||||||
AddDataStream(props->peer_, props->file_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->file_feedback_label_.c_str(), true);
|
||||||
|
|||||||
@@ -901,6 +901,8 @@ int Render::CreateConnectionPeer() {
|
|||||||
|
|
||||||
AddAudioStream(peer_, audio_label_.c_str());
|
AddAudioStream(peer_, audio_label_.c_str());
|
||||||
AddDataStream(peer_, data_label_.c_str(), false);
|
AddDataStream(peer_, data_label_.c_str(), false);
|
||||||
|
AddDataStream(peer_, mouse_label_.c_str(), false);
|
||||||
|
AddDataStream(peer_, keyboard_label_.c_str(), true);
|
||||||
AddDataStream(peer_, control_data_label_.c_str(), true);
|
AddDataStream(peer_, control_data_label_.c_str(), true);
|
||||||
AddDataStream(peer_, file_label_.c_str(), true);
|
AddDataStream(peer_, file_label_.c_str(), true);
|
||||||
AddDataStream(peer_, file_feedback_label_.c_str(), true);
|
AddDataStream(peer_, file_feedback_label_.c_str(), true);
|
||||||
|
|||||||
@@ -83,6 +83,8 @@ class Render {
|
|||||||
PeerPtr* peer_ = nullptr;
|
PeerPtr* peer_ = nullptr;
|
||||||
std::string audio_label_ = "control_audio";
|
std::string audio_label_ = "control_audio";
|
||||||
std::string data_label_ = "data";
|
std::string data_label_ = "data";
|
||||||
|
std::string mouse_label_ = "mouse";
|
||||||
|
std::string keyboard_label_ = "keyboard";
|
||||||
std::string file_label_ = "file";
|
std::string file_label_ = "file";
|
||||||
std::string control_data_label_ = "control_data";
|
std::string control_data_label_ = "control_data";
|
||||||
std::string file_feedback_label_ = "file_feedback";
|
std::string file_feedback_label_ = "file_feedback";
|
||||||
@@ -603,6 +605,8 @@ class Render {
|
|||||||
std::string video_secondary_label_ = "secondary_display";
|
std::string video_secondary_label_ = "secondary_display";
|
||||||
std::string audio_label_ = "audio";
|
std::string audio_label_ = "audio";
|
||||||
std::string data_label_ = "data";
|
std::string data_label_ = "data";
|
||||||
|
std::string mouse_label_ = "mouse";
|
||||||
|
std::string keyboard_label_ = "keyboard";
|
||||||
std::string info_label_ = "info";
|
std::string info_label_ = "info";
|
||||||
std::string control_data_label_ = "control_data";
|
std::string control_data_label_ = "control_data";
|
||||||
std::string file_label_ = "file";
|
std::string file_label_ = "file";
|
||||||
|
|||||||
@@ -99,8 +99,12 @@ int Render::SendKeyCommand(int key_code, bool is_down) {
|
|||||||
if (props->connection_status_ == ConnectionStatus::Connected &&
|
if (props->connection_status_ == ConnectionStatus::Connected &&
|
||||||
props->peer_) {
|
props->peer_) {
|
||||||
std::string msg = remote_action.to_json();
|
std::string msg = remote_action.to_json();
|
||||||
SendDataFrame(props->peer_, msg.c_str(), msg.size(),
|
int ret = SendReliableDataFrame(props->peer_, msg.c_str(), msg.size(),
|
||||||
props->data_label_.c_str());
|
props->keyboard_label_.c_str());
|
||||||
|
if (ret != 0) {
|
||||||
|
LOG_WARN("Send keyboard command failed, remote_id={}, ret={}",
|
||||||
|
target_id, ret);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -227,7 +231,7 @@ int Render::ProcessMouseEvent(const SDL_Event& event) {
|
|||||||
if (props->peer_) {
|
if (props->peer_) {
|
||||||
std::string msg = remote_action.to_json();
|
std::string msg = remote_action.to_json();
|
||||||
SendDataFrame(props->peer_, msg.c_str(), msg.size(),
|
SendDataFrame(props->peer_, msg.c_str(), msg.size(),
|
||||||
props->data_label_.c_str());
|
props->mouse_label_.c_str());
|
||||||
}
|
}
|
||||||
} else if (SDL_EVENT_MOUSE_WHEEL == event.type &&
|
} else if (SDL_EVENT_MOUSE_WHEEL == event.type &&
|
||||||
last_mouse_event.button.x >= render_rect.x &&
|
last_mouse_event.button.x >= render_rect.x &&
|
||||||
@@ -273,7 +277,7 @@ int Render::ProcessMouseEvent(const SDL_Event& event) {
|
|||||||
if (props->peer_) {
|
if (props->peer_) {
|
||||||
std::string msg = remote_action.to_json();
|
std::string msg = remote_action.to_json();
|
||||||
SendDataFrame(props->peer_, msg.c_str(), msg.size(),
|
SendDataFrame(props->peer_, msg.c_str(), msg.size(),
|
||||||
props->data_label_.c_str());
|
props->mouse_label_.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user