From 9803209ba1d1b7ff9d0c2b07a4974ee42c67df5a Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 16 Nov 2025 03:42:21 +0200 Subject: [PATCH] WindowServer: Make clients nonblock Also dont allow freezed windows to "steal" focus and lock up the window server :D --- userspace/programs/WindowServer/WindowServer.cpp | 6 ------ userspace/programs/WindowServer/main.cpp | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/userspace/programs/WindowServer/WindowServer.cpp b/userspace/programs/WindowServer/WindowServer.cpp index 0f98e41f..34ddfdfb 100644 --- a/userspace/programs/WindowServer/WindowServer.cpp +++ b/userspace/programs/WindowServer/WindowServer.cpp @@ -789,10 +789,7 @@ void WindowServer::set_focused_window(BAN::RefPtr window) LibGUI::EventPacket::WindowFocusEvent packet; packet.event.focused = false; if (auto ret = packet.send_serialized(m_focused_window->client_fd()); ret.is_error()) - { dwarnln("could not send window focus event: {}", ret.error()); - return; - } } for (size_t i = m_client_windows.size(); i > 0; i--) @@ -812,10 +809,7 @@ void WindowServer::set_focused_window(BAN::RefPtr window) LibGUI::EventPacket::WindowFocusEvent packet; packet.event.focused = true; if (auto ret = packet.send_serialized(m_focused_window->client_fd()); ret.is_error()) - { dwarnln("could not send window focus event: {}", ret.error()); - return; - } } } diff --git a/userspace/programs/WindowServer/main.cpp b/userspace/programs/WindowServer/main.cpp index b60b7a54..2c531866 100644 --- a/userspace/programs/WindowServer/main.cpp +++ b/userspace/programs/WindowServer/main.cpp @@ -254,7 +254,7 @@ int main() if (FD_ISSET(server_fd, &fds)) { - int window_fd = accept4(server_fd, nullptr, nullptr, SOCK_CLOEXEC); + int window_fd = accept4(server_fd, nullptr, nullptr, SOCK_NONBLOCK | SOCK_CLOEXEC); if (window_fd == -1) { dwarnln("accept: {}", strerror(errno));