[client] only send one in every 100 key down messages

This commit is contained in:
Geoffrey McRae 2017-10-28 09:30:49 +11:00
parent e71f2274e4
commit ee0b086927

View File

@ -382,8 +382,9 @@ static inline const uint32_t mapScancode(SDL_Scancode scancode)
int eventThread(void * arg) int eventThread(void * arg)
{ {
int mouseX = 0; int mouseX = 0;
int mouseY = 0; int mouseY = 0;
int repeatCount = 0;
// ensure mouse acceleration is identical in server mode // ensure mouse acceleration is identical in server mode
SDL_SetHintWithPriority(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "1", SDL_HINT_OVERRIDE); SDL_SetHintWithPriority(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "1", SDL_HINT_OVERRIDE);
@ -407,8 +408,16 @@ int eventThread(void * arg)
case SDL_KEYDOWN: case SDL_KEYDOWN:
{ {
SDL_Scancode sc = event.key.keysym.scancode; SDL_Scancode sc = event.key.keysym.scancode;
if (event.key.repeat)
++repeatCount;
else
repeatCount = 0;
if (sc == SDL_SCANCODE_SCROLLLOCK) if (sc == SDL_SCANCODE_SCROLLLOCK)
{ {
if (event.key.repeat)
break;
serverMode = !serverMode; serverMode = !serverMode;
spice_mouse_mode(serverMode); spice_mouse_mode(serverMode);
SDL_SetRelativeMouseMode(serverMode); SDL_SetRelativeMouseMode(serverMode);
@ -432,6 +441,10 @@ int eventThread(void * arg)
break; break;
} }
if (repeatCount != 0 && repeatCount != 100)
break;
repeatCount = 0;
uint32_t scancode = mapScancode(sc); uint32_t scancode = mapScancode(sc);
if (scancode == 0) if (scancode == 0)
break; break;