From b069ea79420e567bad1755b1481d6f482e01196b Mon Sep 17 00:00:00 2001 From: Vito Gamberini Date: Thu, 22 Jun 2023 02:37:32 -0400 Subject: [PATCH] Events: Expose WaitEvent and WaitEventTimeout --- src/centurion/events/event_handler.hpp | 28 +++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/centurion/events/event_handler.hpp b/src/centurion/events/event_handler.hpp index 2306e7301..152def038 100644 --- a/src/centurion/events/event_handler.hpp +++ b/src/centurion/events/event_handler.hpp @@ -69,6 +69,32 @@ class event_handler final { SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT); } + // Waits until an event is available + void wait() + { + SDL_Event event {}; + if (SDL_WaitEvent(&event)) { + store(event); + } + else { + throw sdl_error {}; + } + } + + // Waits until an event is available or timeout + auto wait(int timeout) noexcept -> bool + { + SDL_Event event {}; + if (SDL_WaitEventTimeout(&event, timeout)) { + store(event); + return true; + } + else { + reset_state(); + return false; + } + } + /// Polls the next available event, if there is one. auto poll() noexcept -> bool { @@ -483,4 +509,4 @@ class event_handler final { } // namespace cen -#endif // CENTURION_EVENTS_EVENT_HANDLER_HPP_ \ No newline at end of file +#endif // CENTURION_EVENTS_EVENT_HANDLER_HPP_