diff --git a/userspace/libraries/LibGUI/Window.cpp b/userspace/libraries/LibGUI/Window.cpp index d0b91b63..1ee239fd 100644 --- a/userspace/libraries/LibGUI/Window.cpp +++ b/userspace/libraries/LibGUI/Window.cpp @@ -387,10 +387,17 @@ namespace LibGUI return {}; } -#define TRY_OR_BREAK(...) ({ auto&& e = (__VA_ARGS__); if (e.is_error()) break; e.release_value(); }) + void Window::wait_events() + { + fd_set fds; + FD_ZERO(&fds); + FD_SET(m_server_fd, &fds); + select(m_server_fd + 1, &fds, nullptr, nullptr, nullptr); + } void Window::poll_events() { +#define TRY_OR_BREAK(...) ({ auto&& e = (__VA_ARGS__); if (e.is_error()) break; e.release_value(); }) for (;;) { fd_set fds; @@ -444,6 +451,7 @@ namespace LibGUI break; } } +#undef TRY_OR_BREAK } } diff --git a/userspace/libraries/LibGUI/include/LibGUI/Window.h b/userspace/libraries/LibGUI/include/LibGUI/Window.h index ef66b581..c7bc862b 100644 --- a/userspace/libraries/LibGUI/include/LibGUI/Window.h +++ b/userspace/libraries/LibGUI/include/LibGUI/Window.h @@ -88,7 +88,9 @@ namespace LibGUI // used on resize to fill empty space void set_bg_color(uint32_t bg_color) { m_bg_color = bg_color; } + void wait_events(); void poll_events(); + void set_socket_error_callback(BAN::Function callback) { m_socket_error_callback = callback; } void set_close_window_event_callback(BAN::Function callback) { m_close_window_event_callback = callback; } void set_resize_window_event_callback(BAN::Function callback) { m_resize_window_event_callback = callback; }