wait-events X11 implementation

This commit is contained in:
Doug Binks 2025-11-21 18:21:58 +00:00
parent d1d118de3e
commit e12aacb41a

View File

@ -128,6 +128,8 @@ static void drainEmptyEvents(void)
{ {
char dummy[64]; char dummy[64];
const ssize_t result = read(_glfw.x11.emptyEventPipe[0], dummy, sizeof(dummy)); const ssize_t result = read(_glfw.x11.emptyEventPipe[0], dummy, sizeof(dummy));
if (result > 0)
_glfw.newEventsRcvd = GLFW_TRUE;
if (result == -1 && errno != EINTR) if (result == -1 && errno != EINTR)
break; break;
} }
@ -2824,14 +2826,20 @@ void _glfwPollEventsX11(void)
void _glfwWaitEventsX11(void) void _glfwWaitEventsX11(void)
{ {
waitForAnyEvent(NULL); while (_glfw.newEventsRcvd == GLFW_FALSE)
_glfwPollEventsX11(); {
waitForAnyEvent(NULL);
_glfwPollEventsX11();
}
} }
void _glfwWaitEventsTimeoutX11(double timeout) void _glfwWaitEventsTimeoutX11(double timeout)
{ {
waitForAnyEvent(&timeout); do
_glfwPollEventsX11(); {
waitForAnyEvent(&timeout);
_glfwPollEventsX11();
} while (_glfw.newEventsRcvd == GLFW_FALSE && timeout > 0.0 );
} }
void _glfwPostEmptyEventX11(void) void _glfwPostEmptyEventX11(void)