1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-13 17:07:34 +00:00

LibCore: Fix event loop stacks on non-main threads

Previously, event loop stacks on non-main threads would always crash
because the condition for "am I the lowest-stacked loop" was still
"am I the main loop", which of course is no longer sensible. A simple
switch to `is_instantiated` fixes this.
This commit is contained in:
kleines Filmröllchen 2022-02-08 23:25:18 +01:00 committed by Andreas Kling
parent 93496af02b
commit 716a3429fa

View file

@ -396,14 +396,14 @@ public:
EventLoopPusher(EventLoop& event_loop) EventLoopPusher(EventLoop& event_loop)
: m_event_loop(event_loop) : m_event_loop(event_loop)
{ {
if (!is_main_event_loop()) { if (EventLoop::has_been_instantiated()) {
m_event_loop.take_pending_events_from(EventLoop::current()); m_event_loop.take_pending_events_from(EventLoop::current());
s_event_loop_stack->append(event_loop); s_event_loop_stack->append(event_loop);
} }
} }
~EventLoopPusher() ~EventLoopPusher()
{ {
if (!is_main_event_loop()) { if (EventLoop::has_been_instantiated()) {
s_event_loop_stack->take_last(); s_event_loop_stack->take_last();
EventLoop::current().take_pending_events_from(m_event_loop); EventLoop::current().take_pending_events_from(m_event_loop);
} }