mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 10:47:35 +00:00
LibWeb+Browser+Ladybird: Use JS::SafeFunction for EventLoop callbacks
This automatically protects captured objects from being GC'd before the callback runs.
This commit is contained in:
parent
892470a912
commit
6d93e03211
11 changed files with 19 additions and 19 deletions
|
@ -18,13 +18,13 @@ namespace Ladybird {
|
|||
EventLoopPluginQt::EventLoopPluginQt() = default;
|
||||
EventLoopPluginQt::~EventLoopPluginQt() = default;
|
||||
|
||||
void EventLoopPluginQt::spin_until(Function<bool()> goal_condition)
|
||||
void EventLoopPluginQt::spin_until(JS::SafeFunction<bool()> goal_condition)
|
||||
{
|
||||
while (!goal_condition())
|
||||
QCoreApplication::processEvents(QEventLoop::ProcessEventsFlag::AllEvents | QEventLoop::ProcessEventsFlag::WaitForMoreEvents);
|
||||
}
|
||||
|
||||
void EventLoopPluginQt::deferred_invoke(Function<void()> function)
|
||||
void EventLoopPluginQt::deferred_invoke(JS::SafeFunction<void()> function)
|
||||
{
|
||||
VERIFY(function);
|
||||
QTimer::singleShot(0, [function = move(function)] {
|
||||
|
|
|
@ -15,8 +15,8 @@ public:
|
|||
EventLoopPluginQt();
|
||||
virtual ~EventLoopPluginQt() override;
|
||||
|
||||
virtual void spin_until(Function<bool()> goal_condition) override;
|
||||
virtual void deferred_invoke(Function<void()>) override;
|
||||
virtual void spin_until(JS::SafeFunction<bool()> goal_condition) override;
|
||||
virtual void deferred_invoke(JS::SafeFunction<void()>) override;
|
||||
virtual NonnullRefPtr<Web::Platform::Timer> create_timer() override;
|
||||
virtual void quit() override;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue