mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 09:28:11 +00:00
LibCore+Ladybird: Add EventLoopManager interface for persistent state
Things such as timers and notifiers aren't specific to one instance of Core::EventLoop, so let's not tie them down to EventLoopImplementation. Instead, move those APIs + signals & a few other things to a new EventLoopManager interface. EventLoopManager also knows how to create a new EventLoopImplementation object.
This commit is contained in:
parent
c21eb30a2b
commit
7b963e1e98
11 changed files with 177 additions and 118 deletions
|
@ -7,18 +7,36 @@
|
|||
#include <AK/NonnullOwnPtr.h>
|
||||
#include <LibCore/Event.h>
|
||||
#include <LibCore/EventLoopImplementation.h>
|
||||
#include <LibCore/EventLoopImplementationUnix.h>
|
||||
#include <LibCore/ThreadEventQueue.h>
|
||||
|
||||
namespace Core {
|
||||
|
||||
EventLoopImplementation::EventLoopImplementation()
|
||||
EventLoopImplementation::EventLoopImplementation() = default;
|
||||
|
||||
EventLoopImplementation::~EventLoopImplementation() = default;
|
||||
|
||||
static EventLoopManager* s_event_loop_manager;
|
||||
EventLoopManager& EventLoopManager::the()
|
||||
{
|
||||
if (!s_event_loop_manager)
|
||||
s_event_loop_manager = new EventLoopManagerUnix;
|
||||
return *s_event_loop_manager;
|
||||
}
|
||||
|
||||
void EventLoopManager::install(Core::EventLoopManager& manager)
|
||||
{
|
||||
s_event_loop_manager = &manager;
|
||||
}
|
||||
|
||||
EventLoopManager::EventLoopManager()
|
||||
: m_thread_event_queue(ThreadEventQueue::current())
|
||||
{
|
||||
}
|
||||
|
||||
EventLoopImplementation::~EventLoopImplementation() = default;
|
||||
EventLoopManager::~EventLoopManager() = default;
|
||||
|
||||
void EventLoopImplementation::post_event(Object& receiver, NonnullOwnPtr<Event>&& event)
|
||||
void EventLoopManager::post_event(Object& receiver, NonnullOwnPtr<Event>&& event)
|
||||
{
|
||||
m_thread_event_queue.post_event(receiver, move(event));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue