summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibCore
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibCore')
-rw-r--r--Userland/Libraries/LibCore/EventLoop.cpp23
-rw-r--r--Userland/Libraries/LibCore/EventLoop.h12
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);