diff options
Diffstat (limited to 'Userland/Libraries/LibCore')
-rw-r--r-- | Userland/Libraries/LibCore/EventLoop.cpp | 23 | ||||
-rw-r--r-- | Userland/Libraries/LibCore/EventLoop.h | 12 |
2 files changed, 5 insertions, 30 deletions
diff --git a/Userland/Libraries/LibCore/EventLoop.cpp b/Userland/Libraries/LibCore/EventLoop.cpp index e4e921cced..a1784964fd 100644 --- a/Userland/Libraries/LibCore/EventLoop.cpp +++ b/Userland/Libraries/LibCore/EventLoop.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org> * Copyright (c) 2022, kleines Filmröllchen <malu.bertsch@gmail.com> * Copyright (c) 2022, the SerenityOS developers. * @@ -518,30 +518,11 @@ size_t EventLoop::pump(WaitMode mode) return processed_events; } -void EventLoop::post_event(Object& receiver, NonnullOwnPtr<Event>&& event, ShouldWake should_wake) +void EventLoop::post_event(Object& receiver, NonnullOwnPtr<Event>&& event) { Threading::MutexLocker lock(m_private->lock); dbgln_if(EVENTLOOP_DEBUG, "Core::EventLoop::post_event: ({}) << receiver={}, event={}", m_queued_events.size(), receiver, event); m_queued_events.empend(receiver, move(event)); - if (should_wake == ShouldWake::Yes) - wake(); -} - -void EventLoop::wake_once(Object& receiver, int custom_event_type) -{ - Threading::MutexLocker lock(m_private->lock); - dbgln_if(EVENTLOOP_DEBUG, "Core::EventLoop::wake_once: event type {}", custom_event_type); - auto identical_events = m_queued_events.find_if([&](auto& queued_event) { - if (queued_event.receiver.is_null()) - return false; - auto const& event = queued_event.event; - auto is_receiver_identical = queued_event.receiver.ptr() == &receiver; - auto event_id_matches = event->type() == Event::Type::Custom && static_cast<CustomEvent const*>(event.ptr())->custom_type() == custom_event_type; - return is_receiver_identical && event_id_matches; - }); - // Event is not in the queue yet, so we want to wake. - if (identical_events.is_end()) - post_event(receiver, make<CustomEvent>(custom_event_type), ShouldWake::Yes); } void EventLoop::add_job(NonnullRefPtr<Promise<NonnullRefPtr<Object>>> job_promise) diff --git a/Userland/Libraries/LibCore/EventLoop.h b/Userland/Libraries/LibCore/EventLoop.h index a8519507b4..7b49eb8e8f 100644 --- a/Userland/Libraries/LibCore/EventLoop.h +++ b/Userland/Libraries/LibCore/EventLoop.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org> * Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org> * Copyright (c) 2022, the SerenityOS developers. * @@ -55,11 +55,6 @@ public: Yes, }; - enum class ShouldWake { - No, - Yes - }; - enum class WaitMode { WaitForEvents, PollForEvents, @@ -82,9 +77,8 @@ public: // Pump the event loop until some condition is met. void spin_until(Function<bool()>); - // Post an event to this event loop and possibly wake the loop. - void post_event(Object& receiver, NonnullOwnPtr<Event>&&, ShouldWake = ShouldWake::No); - void wake_once(Object& receiver, int custom_event_type); + // Post an event to this event loop. + void post_event(Object& receiver, NonnullOwnPtr<Event>&&); void add_job(NonnullRefPtr<Promise<NonnullRefPtr<Object>>> job_promise); |