/* * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include "EventLoopPluginSerenity.h" #include #include #include namespace Web::Platform { EventLoopPluginSerenity::EventLoopPluginSerenity() = default; EventLoopPluginSerenity::~EventLoopPluginSerenity() = default; void EventLoopPluginSerenity::spin_until(GC::Root> goal_condition) { Core::EventLoop::current().spin_until([goal_condition = move(goal_condition)]() { return goal_condition->function()(); }); } void EventLoopPluginSerenity::deferred_invoke(GC::Root> function) { VERIFY(function); Core::deferred_invoke([function = move(function)]() { function->function()(); }); } GC::Ref EventLoopPluginSerenity::create_timer(GC::Heap& heap) { return TimerSerenity::create(heap); } void EventLoopPluginSerenity::quit() { Core::EventLoop::current().quit(0); } }