1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:47:34 +00:00

LibCore: Add Core::EventLoop::spin_until(Function<bool()>)

This function spins the event loop until a goal condition is met.
This commit is contained in:
Andreas Kling 2021-09-25 19:32:14 +02:00
parent 2c0987c93b
commit f2b9ec9f8a
2 changed files with 9 additions and 0 deletions

View file

@ -366,6 +366,13 @@ int EventLoop::exec()
VERIFY_NOT_REACHED();
}
void EventLoop::spin_until(Function<bool()> goal_condition)
{
EventLoopPusher pusher(*this);
while (!goal_condition())
pump();
}
void EventLoop::pump(WaitMode mode)
{
wait_for_event(mode);

View file

@ -44,6 +44,8 @@ public:
// this should really only be used for integrating with other event loops
void pump(WaitMode = WaitMode::WaitForEvents);
void spin_until(Function<bool()>);
void post_event(Object& receiver, NonnullOwnPtr<Event>&&);
static EventLoop& main();