From b555b3a535cf46f6ed0b8d242b2f1daa1398dae9 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Fri, 2 Jan 2026 12:12:35 +0100 Subject: [PATCH] Improve: Reduce mouse operation lag during remote control --- server/2015Remote/2015RemoteDlg.cpp | 2 ++ server/2015Remote/ScreenSpyDlg.cpp | 6 +++++- server/2015Remote/Server.h | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index 35a8159..cdce259 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -2573,6 +2573,7 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject) break; } case TOKEN_BITMAPINFO_HIDE: { // 虚拟桌面【x】 + ContextObject->SetNoDelay(TRUE); g_2015RemoteDlg->SendMessage(WM_OPENHIDESCREENDLG, 0, (LPARAM)ContextObject); break; } @@ -2597,6 +2598,7 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject) break; } case TOKEN_BITMAPINFO: { // 远程桌面【x】 + ContextObject->SetNoDelay(TRUE); g_2015RemoteDlg->SendMessage(WM_OPENSCREENSPYDIALOG, 0, (LPARAM)ContextObject); break; } diff --git a/server/2015Remote/ScreenSpyDlg.cpp b/server/2015Remote/ScreenSpyDlg.cpp index 85e8ce9..d296b6e 100644 --- a/server/2015Remote/ScreenSpyDlg.cpp +++ b/server/2015Remote/ScreenSpyDlg.cpp @@ -805,7 +805,11 @@ VOID CScreenSpyDlg::SendCommand(const MYMSG* Msg) int dx = abs(Msg->pt.x - m_lastMousePoint.x); int dy = abs(Msg->pt.y - m_lastMousePoint.y); int dist_sq = dx * dx + dy * dy; - if (time_elapsed < 200 && dist_sq < 18 * 18) { + + bool fastMove = dist_sq > 50 * 50; + int minInterval = fastMove ? 33 : 16; + int minDistSq = fastMove ? 10 * 10 : 3 * 3; + if (time_elapsed < minInterval && dist_sq < minDistSq) { return; } m_lastMouseMove = now; diff --git a/server/2015Remote/Server.h b/server/2015Remote/Server.h index 66f7695..b2f23c2 100644 --- a/server/2015Remote/Server.h +++ b/server/2015Remote/Server.h @@ -693,6 +693,10 @@ public: { GroupName = group; } + void SetNoDelay(BOOL bNoDelay = TRUE) + { + setsockopt(sClientSocket, IPPROTO_TCP, TCP_NODELAY, (char*)&bNoDelay, sizeof(BOOL)); + } } CONTEXT_OBJECT, * PCONTEXT_OBJECT; typedef CList ContextObjectList;