From 431d013d327f129cfba09f582670c23e8b0f61dd Mon Sep 17 00:00:00 2001 From: Luflosi Date: Sat, 11 Jul 2020 18:18:33 +0200 Subject: [PATCH] X11: Fix race in window hovered query From upstream: https://github.com/glfw/glfw/commit/ceb20c7f97994106db17cc66bd8abad331bc355e. --- glfw/x11_window.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/glfw/x11_window.c b/glfw/x11_window.c index d35465573..a640a47c7 100644 --- a/glfw/x11_window.c +++ b/glfw/x11_window.c @@ -2460,11 +2460,19 @@ int _glfwPlatformWindowHovered(_GLFWwindow* window) int rootX, rootY, childX, childY; unsigned int mask; - if (!XQueryPointer(_glfw.x11.display, w, - &root, &w, &rootX, &rootY, &childX, &childY, &mask)) - { + _glfwGrabErrorHandlerX11(); + + const Bool result = XQueryPointer(_glfw.x11.display, w, + &root, &w, &rootX, &rootY, + &childX, &childY, &mask); + + _glfwReleaseErrorHandlerX11(); + + if (_glfw.x11.errorCode == BadWindow) + w = _glfw.x11.root; + + if (!result) return false; - } if (w == window->x11.handle) return true;