This commit is contained in:
dijunkun
2025-10-09 14:47:47 +08:00
3 changed files with 40 additions and 55 deletions

View File

@@ -74,7 +74,7 @@ int Render::LocalWindow() {
ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0, 0, 0, 0)); ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0, 0, 0, 0));
ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0, 0, 0, 0)); ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0, 0, 0, 0));
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
if (ImGui::Button(ICON_FA_COPY, ImVec2(35, 38))) { if (ImGui::Button(ICON_FA_COPY, ImVec2(22, 38))) {
local_id_copied_ = true; local_id_copied_ = true;
ImGui::SetClipboardText(client_id_); ImGui::SetClipboardText(client_id_);
copy_start_time_ = ImGui::GetTime(); copy_start_time_ = ImGui::GetTime();
@@ -84,7 +84,7 @@ int Render::LocalWindow() {
double time_duration = ImGui::GetTime() - copy_start_time_; double time_duration = ImGui::GetTime() - copy_start_time_;
if (local_id_copied_ && time_duration < 1.0f) { if (local_id_copied_ && time_duration < 1.0f) {
const ImGuiViewport *viewport = ImGui::GetMainViewport(); const ImGuiViewport* viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2((viewport->WorkSize.x - viewport->WorkPos.x -
notification_window_width_) / notification_window_width_) /
@@ -159,7 +159,7 @@ int Render::LocalWindow() {
} }
if (!show_password_) { if (!show_password_) {
ImDrawList *draw_list = ImGui::GetWindowDrawList(); ImDrawList* draw_list = ImGui::GetWindowDrawList();
draw_list->AddLine(ImVec2(l_x + 3.0f, l_y + 12.5f), draw_list->AddLine(ImVec2(l_x + 3.0f, l_y + 12.5f),
ImVec2(l_x + 20.3f, l_y + 26.5f), ImVec2(l_x + 20.3f, l_y + 26.5f),
IM_COL32(239, 240, 242, 255), 2.0f); IM_COL32(239, 240, 242, 255), 2.0f);
@@ -170,19 +170,6 @@ int Render::LocalWindow() {
ImGui::SameLine(); ImGui::SameLine();
if (ImGui::Button(
regenerate_password_ ? ICON_FA_SPINNER : ICON_FA_ARROWS_ROTATE,
ImVec2(22, 38))) {
regenerate_password_ = true;
regenerate_password_start_time_ = ImGui::GetTime();
LeaveConnection(peer_, client_id_);
}
if (ImGui::GetTime() - regenerate_password_start_time_ > 0.3f) {
regenerate_password_ = false;
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_PEN, ImVec2(22, 38))) { if (ImGui::Button(ICON_FA_PEN, ImVec2(22, 38))) {
show_reset_password_window_ = true; show_reset_password_window_ = true;
} }
@@ -190,7 +177,7 @@ int Render::LocalWindow() {
ImGui::PopStyleColor(3); ImGui::PopStyleColor(3);
if (show_reset_password_window_) { if (show_reset_password_window_) {
const ImGuiViewport *viewport = ImGui::GetMainViewport(); const ImGuiViewport* viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowPos( ImGui::SetNextWindowPos(
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - ImVec2((viewport->WorkSize.x - viewport->WorkPos.x -

View File

@@ -382,7 +382,6 @@ class Render {
bool rejoin_ = false; bool rejoin_ = false;
bool local_id_copied_ = false; bool local_id_copied_ = false;
bool show_password_ = true; bool show_password_ = true;
bool regenerate_password_ = false;
bool show_about_window_ = false; bool show_about_window_ = false;
bool show_connection_status_window_ = false; bool show_connection_status_window_ = false;
bool show_reset_password_window_ = false; bool show_reset_password_window_ = false;
@@ -396,7 +395,6 @@ class Render {
std::string delete_connection_name_ = ""; std::string delete_connection_name_ = "";
bool re_enter_remote_id_ = false; bool re_enter_remote_id_ = false;
double copy_start_time_ = 0; double copy_start_time_ = 0;
double regenerate_password_start_time_ = 0;
SignalStatus signal_status_ = SignalStatus::SignalClosed; SignalStatus signal_status_ = SignalStatus::SignalClosed;
std::string signal_status_str_ = ""; std::string signal_status_str_ = "";
bool signal_connected_ = false; bool signal_connected_ = false;

View File

@@ -26,7 +26,7 @@ int Render::SendKeyCommand(int key_code, bool is_down) {
client_properties_.end()) { client_properties_.end()) {
auto props = client_properties_[controlled_remote_id_]; auto props = client_properties_[controlled_remote_id_];
if (props->connection_status_ == ConnectionStatus::Connected) { if (props->connection_status_ == ConnectionStatus::Connected) {
SendDataFrame(props->peer_, (const char *)&remote_action, SendDataFrame(props->peer_, (const char*)&remote_action,
sizeof(remote_action), props->data_label_.c_str()); sizeof(remote_action), props->data_label_.c_str());
} }
} }
@@ -35,14 +35,14 @@ int Render::SendKeyCommand(int key_code, bool is_down) {
return 0; return 0;
} }
int Render::ProcessMouseEvent(const SDL_Event &event) { int Render::ProcessMouseEvent(const SDL_Event& event) {
controlled_remote_id_ = ""; controlled_remote_id_ = "";
int video_width, video_height = 0; int video_width, video_height = 0;
int render_width, render_height = 0; int render_width, render_height = 0;
float ratio_x, ratio_y = 0; float ratio_x, ratio_y = 0;
RemoteAction remote_action; RemoteAction remote_action;
for (auto &it : client_properties_) { for (auto& it : client_properties_) {
auto props = it.second; auto props = it.second;
if (!props->control_mouse_) { if (!props->control_mouse_) {
continue; continue;
@@ -92,7 +92,7 @@ int Render::ProcessMouseEvent(const SDL_Event &event) {
if (props->control_bar_hovered_ || props->display_selectable_hovered_) { if (props->control_bar_hovered_ || props->display_selectable_hovered_) {
remote_action.m.flag = MouseFlag::move; remote_action.m.flag = MouseFlag::move;
} }
SendDataFrame(props->peer_, (const char *)&remote_action, SendDataFrame(props->peer_, (const char*)&remote_action,
sizeof(remote_action), props->data_label_.c_str()); sizeof(remote_action), props->data_label_.c_str());
} else if (SDL_EVENT_MOUSE_WHEEL == event.type && } else if (SDL_EVENT_MOUSE_WHEEL == event.type &&
last_mouse_event.button.x >= props->stream_render_rect_.x && last_mouse_event.button.x >= props->stream_render_rect_.x &&
@@ -125,7 +125,7 @@ int Render::ProcessMouseEvent(const SDL_Event &event) {
(float)(event.button.y - props->stream_render_rect_.y) / (float)(event.button.y - props->stream_render_rect_.y) /
render_height; render_height;
SendDataFrame(props->peer_, (const char *)&remote_action, SendDataFrame(props->peer_, (const char*)&remote_action,
sizeof(remote_action), props->data_label_.c_str()); sizeof(remote_action), props->data_label_.c_str());
} }
} }
@@ -133,8 +133,8 @@ int Render::ProcessMouseEvent(const SDL_Event &event) {
return 0; return 0;
} }
void Render::SdlCaptureAudioIn(void *userdata, Uint8 *stream, int len) { void Render::SdlCaptureAudioIn(void* userdata, Uint8* stream, int len) {
Render *render = (Render *)userdata; Render* render = (Render*)userdata;
if (!render) { if (!render) {
return; return;
} }
@@ -143,7 +143,7 @@ void Render::SdlCaptureAudioIn(void *userdata, Uint8 *stream, int len) {
for (auto it : render->client_properties_) { for (auto it : render->client_properties_) {
auto props = it.second; auto props = it.second;
if (props->connection_status_ == ConnectionStatus::Connected) { if (props->connection_status_ == ConnectionStatus::Connected) {
SendAudioFrame(props->peer_, (const char *)stream, len, SendAudioFrame(props->peer_, (const char*)stream, len,
render->audio_label_.c_str()); render->audio_label_.c_str());
} }
} }
@@ -156,8 +156,8 @@ void Render::SdlCaptureAudioIn(void *userdata, Uint8 *stream, int len) {
} }
} }
void Render::SdlCaptureAudioOut([[maybe_unused]] void *userdata, void Render::SdlCaptureAudioOut([[maybe_unused]] void* userdata,
[[maybe_unused]] Uint8 *stream, [[maybe_unused]] Uint8* stream,
[[maybe_unused]] int len) { [[maybe_unused]] int len) {
// Render *render = (Render *)userdata; // Render *render = (Render *)userdata;
// for (auto it : render->client_properties_) { // for (auto it : render->client_properties_) {
@@ -184,10 +184,10 @@ void Render::SdlCaptureAudioOut([[maybe_unused]] void *userdata,
// render->audio_buffer_fresh_ = false; // render->audio_buffer_fresh_ = false;
} }
void Render::OnReceiveVideoBufferCb(const XVideoFrame *video_frame, void Render::OnReceiveVideoBufferCb(const XVideoFrame* video_frame,
const char *user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
void *user_data) { void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
@@ -197,7 +197,7 @@ void Render::OnReceiveVideoBufferCb(const XVideoFrame *video_frame,
render->client_properties_.end()) { render->client_properties_.end()) {
return; return;
} }
SubStreamWindowProperties *props = SubStreamWindowProperties* props =
render->client_properties_.find(remote_id)->second.get(); render->client_properties_.find(remote_id)->second.get();
if (props->connection_established_) { if (props->connection_established_) {
@@ -236,10 +236,10 @@ void Render::OnReceiveVideoBufferCb(const XVideoFrame *video_frame,
} }
} }
void Render::OnReceiveAudioBufferCb(const char *data, size_t size, void Render::OnReceiveAudioBufferCb(const char* data, size_t size,
const char *user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
void *user_data) { void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
@@ -248,17 +248,17 @@ void Render::OnReceiveAudioBufferCb(const char *data, size_t size,
if (render->output_stream_) { if (render->output_stream_) {
int pushed = SDL_PutAudioStreamData( int pushed = SDL_PutAudioStreamData(
render->output_stream_, (const Uint8 *)data, static_cast<int>(size)); render->output_stream_, (const Uint8*)data, static_cast<int>(size));
if (pushed < 0) { if (pushed < 0) {
LOG_ERROR("Failed to push audio data: {}", SDL_GetError()); LOG_ERROR("Failed to push audio data: {}", SDL_GetError());
} }
} }
} }
void Render::OnReceiveDataBufferCb(const char *data, size_t size, void Render::OnReceiveDataBufferCb(const char* data, size_t size,
const char *user_id, size_t user_id_size, const char* user_id, size_t user_id_size,
void *user_data) { void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
@@ -325,9 +325,9 @@ void Render::OnReceiveDataBufferCb(const char *data, size_t size,
} }
} }
void Render::OnSignalStatusCb(SignalStatus status, const char *user_id, void Render::OnSignalStatusCb(SignalStatus status, const char* user_id,
size_t user_id_size, void *user_data) { size_t user_id_size, void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
@@ -378,9 +378,9 @@ void Render::OnSignalStatusCb(SignalStatus status, const char *user_id,
} }
} }
void Render::OnConnectionStatusCb(ConnectionStatus status, const char *user_id, void Render::OnConnectionStatusCb(ConnectionStatus status, const char* user_id,
const size_t user_id_size, void *user_data) { const size_t user_id_size, void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) return; if (!render) return;
std::string remote_id(user_id, user_id_size); std::string remote_id(user_id, user_id_size);
@@ -468,19 +468,19 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, const char *user_id,
} }
} }
void Render::NetStatusReport(const char *client_id, size_t client_id_size, void Render::NetStatusReport(const char* client_id, size_t client_id_size,
TraversalMode mode, TraversalMode mode,
const XNetTrafficStats *net_traffic_stats, const XNetTrafficStats* net_traffic_stats,
const char *user_id, const size_t user_id_size, const char* user_id, const size_t user_id_size,
void *user_data) { void* user_data) {
Render *render = (Render *)user_data; Render* render = (Render*)user_data;
if (!render) { if (!render) {
return; return;
} }
if (strchr(client_id, '@') != nullptr && strchr(user_id, '-') == nullptr) { if (strchr(client_id, '@') != nullptr && strchr(user_id, '-') == nullptr) {
std::string id, password; std::string id, password;
const char *at_pos = strchr(client_id, '@'); const char* at_pos = strchr(client_id, '@');
if (at_pos == nullptr) { if (at_pos == nullptr) {
id = client_id; id = client_id;
password.clear(); password.clear();