mirror of https://github.com/encounter/SDL.git
wayland: Avoid infinite loop in keyboard_repeat_handle
If `repeat_info->next_repeat_ms` overflows, many key presses will be generated. In the worst case, `now = 0xFFFFFFFFU` and the loop will never terminate. Rearrange the comparison in order to gracefully handle the overflow case. Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
This commit is contained in:
parent
3b083b9911
commit
fb0c3040c0
|
@ -210,7 +210,7 @@ keyboard_repeat_handle(SDL_WaylandKeyboardRepeat* repeat_info, uint32_t now)
|
||||||
if (!repeat_info->is_key_down || !repeat_info->is_initialized) {
|
if (!repeat_info->is_key_down || !repeat_info->is_initialized) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
while (repeat_info->next_repeat_ms <= now) {
|
while ((now - repeat_info->next_repeat_ms) < 0x80000000U) {
|
||||||
if (repeat_info->scancode != SDL_SCANCODE_UNKNOWN) {
|
if (repeat_info->scancode != SDL_SCANCODE_UNKNOWN) {
|
||||||
SDL_SendKeyboardKey(SDL_PRESSED, repeat_info->scancode);
|
SDL_SendKeyboardKey(SDL_PRESSED, repeat_info->scancode);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue