Feature: Add FPS control menu for remote desktop

This commit is contained in:
yuanyuanxiang
2025-12-28 21:25:45 +01:00
parent f3ff5fdb03
commit 4ae97abcc6
4 changed files with 29 additions and 2 deletions

View File

@@ -341,7 +341,7 @@ DWORD WINAPI CScreenManager::WorkThreadProc(LPVOID lParam)
ULONG ulNextSendLength = 0;
const char* szBuffer = This->GetNextScreen(ulNextSendLength);
if (szBuffer) {
s0 = max(s0, 50); // 最快每秒20帧
s0 = max(s0, 1000./This->m_nMaxFPS); // 最快每秒20帧
s0 = min(s0, 1000);
int span = s0-(clock() - last);
Sleep(span > 0 ? span : 1);
@@ -361,7 +361,7 @@ DWORD WINAPI CScreenManager::WorkThreadProc(LPVOID lParam)
s0 = (s0 >= sleep/4) ? s0/alpha : s0;
c2 = 0;
#if _DEBUG
if (1000./s0<20.0)
if (1000./s0<This->m_nMaxFPS)
Mprintf("[-]SendScreen Span= %dms, s0= %f, fps= %f\n", span, s0, 1000./s0);
#endif
}
@@ -478,6 +478,11 @@ VOID CScreenManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
m_ClientObject->SetMultiThreadCompress(threadNum);
break;
}
case CMD_FPS: {
m_nMaxFPS = min(255, unsigned(szBuffer[1]));
m_nMaxFPS = max(m_nMaxFPS, 1);
break;
}
case COMMAND_NEXT: {
m_DlgID = ulLength >= 9 ? *((uint64_t*)(szBuffer + 1)) : 0;
NotifyDialogIsOpen();