mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:37:35 +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:
parent
2c0987c93b
commit
f2b9ec9f8a
2 changed files with 9 additions and 0 deletions
|
@ -366,6 +366,13 @@ int EventLoop::exec()
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventLoop::spin_until(Function<bool()> goal_condition)
|
||||||
|
{
|
||||||
|
EventLoopPusher pusher(*this);
|
||||||
|
while (!goal_condition())
|
||||||
|
pump();
|
||||||
|
}
|
||||||
|
|
||||||
void EventLoop::pump(WaitMode mode)
|
void EventLoop::pump(WaitMode mode)
|
||||||
{
|
{
|
||||||
wait_for_event(mode);
|
wait_for_event(mode);
|
||||||
|
|
|
@ -44,6 +44,8 @@ public:
|
||||||
// this should really only be used for integrating with other event loops
|
// this should really only be used for integrating with other event loops
|
||||||
void pump(WaitMode = WaitMode::WaitForEvents);
|
void pump(WaitMode = WaitMode::WaitForEvents);
|
||||||
|
|
||||||
|
void spin_until(Function<bool()>);
|
||||||
|
|
||||||
void post_event(Object& receiver, NonnullOwnPtr<Event>&&);
|
void post_event(Object& receiver, NonnullOwnPtr<Event>&&);
|
||||||
|
|
||||||
static EventLoop& main();
|
static EventLoop& main();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue