commit 6983af71648475f0e6d87ddc031e5238e811b748
parent dc3a1dbe09898be7c56ab5b11a0c61ef2cb98734
Author: Amin Mesbah <dev@aminmesbah.com>
Date: Sat, 28 May 2022 22:39:07 -0700
Fix select() timeout after hibernate
`select()` was timing out unceasingly after resume from system
hibernation. Setting the fd_set right before calling `select()` fixes
that.
Diffstat:
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/main.c b/main.c
@@ -53,7 +53,6 @@ int main(void)
bool error_occurred = false;
int device_handle = -1;
bool need_send_feature_report = true;
- fd_set read_fds;
while (running)
{
@@ -80,8 +79,6 @@ int main(void)
goto error;
}
- FD_ZERO(&read_fds);
- FD_SET(device_handle, &read_fds);
need_send_feature_report = true;
}
@@ -96,6 +93,9 @@ int main(void)
need_send_feature_report = false;
}
+ fd_set read_fds;
+ FD_ZERO(&read_fds);
+ FD_SET(device_handle, &read_fds);
errno = 0;
int ready = select(device_handle + 1, &read_fds, NULL, NULL, &(struct timeval){ .tv_sec = 15 });
if (ready == -1 && errno != EINTR)