mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
cc4b3cbacc
Some checks are pending
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Push notes / build (push) Waiting to run
45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) 2023, Andreas Kling <andreas@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/NonnullOwnPtr.h>
|
|
#include <AK/OwnPtr.h>
|
|
|
|
namespace Core {
|
|
|
|
// Per-thread global event queue. This is where events are queued for the EventLoop to process.
|
|
// There is only one ThreadEventQueue per thread, and it is accessed via ThreadEventQueue::current().
|
|
// It is allowed to post events to other threads' event queues.
|
|
class ThreadEventQueue {
|
|
AK_MAKE_NONCOPYABLE(ThreadEventQueue);
|
|
AK_MAKE_NONMOVABLE(ThreadEventQueue);
|
|
|
|
public:
|
|
static ThreadEventQueue& current();
|
|
|
|
// Process all queued events. Returns the number of events that were processed.
|
|
size_t process();
|
|
|
|
// Posts an event to the event queue.
|
|
void post_event(EventReceiver& receiver, NonnullOwnPtr<Event>);
|
|
|
|
// Used by Threading::BackgroundAction.
|
|
void add_job(NonnullRefPtr<Promise<NonnullRefPtr<EventReceiver>>>);
|
|
void cancel_all_pending_jobs();
|
|
|
|
// Returns true if there are events waiting to be flushed.
|
|
bool has_pending_events() const;
|
|
|
|
private:
|
|
ThreadEventQueue();
|
|
~ThreadEventQueue();
|
|
|
|
struct Private;
|
|
OwnPtr<Private> m_private;
|
|
};
|
|
|
|
}
|