Wayland: Continue poll() if timerfd can’t be read

In the case the key repeat timerfd was interrupted before read(), the
cursor timerfd wasn’t read at all even when it could.

Related to #1711
This commit is contained in:
Emmanuel Gil Peyrot
2021-12-14 09:29:01 +01:00
parent 963e728881
commit 68879081cb
2 changed files with 4 additions and 8 deletions
+3 -8
View File
@@ -751,10 +751,7 @@ static void handleEvents(int timeout)
if (fds[1].revents & POLLIN)
{
read_ret = read(_glfw.wl.timerfd, &repeats, sizeof(repeats));
if (read_ret != 8)
return;
if (_glfw.wl.keyboardFocus)
if (read_ret == 8 && _glfw.wl.keyboardFocus)
{
for (uint64_t i = 0; i < repeats; ++i)
{
@@ -770,10 +767,8 @@ static void handleEvents(int timeout)
if (fds[2].revents & POLLIN)
{
read_ret = read(_glfw.wl.cursorTimerfd, &repeats, sizeof(repeats));
if (read_ret != 8)
return;
incrementCursorImage(_glfw.wl.pointerFocus);
if (read_ret == 8)
incrementCursorImage(_glfw.wl.pointerFocus);
}
}
else