mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:48:12 +00:00
LibCore+Userland: Implement Core::deferred_invoke
Core::deferred_invoke is a way of executing an action after previously queued events have been processed. It removes the requirement of having/being a Core::Object subclass in order to defer invocation through Core::Object::deferred_invoke. Core::Object::deferred_invoke now delegates to Core::deferred_invoke. The version with the Object& argument is still present but will be removed in the following commits. This commit additionally fixes a new places where the DeferredInvocationEvent was dispatched to the event loop directly, and replaces them with the Core::deferred_invoke equivalent.
This commit is contained in:
parent
ac24842f48
commit
e9121f8b1f
9 changed files with 63 additions and 23 deletions
|
@ -164,7 +164,12 @@ void Object::dump_tree(int indent)
|
|||
|
||||
void Object::deferred_invoke(Function<void(Object&)> invokee)
|
||||
{
|
||||
Core::EventLoop::current().post_event(*this, make<Core::DeferredInvocationEvent>(move(invokee)));
|
||||
deferred_invoke([invokee = move(invokee), this] { invokee(*this); });
|
||||
}
|
||||
|
||||
void Object::deferred_invoke(Function<void()> invokee)
|
||||
{
|
||||
Core::deferred_invoke([invokee = move(invokee), strong_this = NonnullRefPtr(*this)] { invokee(); });
|
||||
}
|
||||
|
||||
void Object::save_to(JsonObject& json)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue