diff --git a/glfw/wl_window.c b/glfw/wl_window.c index cc1c266ed..3cebcabfe 100644 --- a/glfw/wl_window.c +++ b/glfw/wl_window.c @@ -764,14 +764,18 @@ animateCursorImage(id_type timer_id UNUSED, void *data UNUSED) { static void abortOnFatalError(int last_error) { - _glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: fatal display error: %s", strerror(last_error)); - if (_glfw.callbacks.application_close) _glfw.callbacks.application_close(1); - else { - _GLFWwindow* window = _glfw.windowListHead; - while (window) - { - _glfwInputWindowCloseRequest(window); - window = window->next; + static bool abort_called = false; + if (!abort_called) { + abort_called = true; + _glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: fatal display error: %s", strerror(last_error)); + if (_glfw.callbacks.application_close) _glfw.callbacks.application_close(1); + else { + _GLFWwindow* window = _glfw.windowListHead; + while (window) + { + _glfwInputWindowCloseRequest(window); + window = window->next; + } } } // ensure the tick callback is called