19 #ifndef MIR_GLIB_MAIN_LOOP_SOURCES_H_ 20 #define MIR_GLIB_MAIN_LOOP_SOURCES_H_ 30 #include <unordered_map> 32 #if defined(__clang__) 33 #pragma clang diagnostic push 34 #pragma clang diagnostic ignored "-Wdeprecated-register" 39 #if defined(__clang__) 40 #pragma clang diagnostic pop 45 class LockableCallback;
53 GSourceHandle(GSource* gsource, std::function<
void(GSource*)>
const& terminate_dispatch);
60 operator GSource*()
const;
64 std::function<void(GSource*)> terminate_dispatch;
68 GMainContext* main_context,
int priority, std::function<
void()>
const& callback);
71 GMainContext* main_context,
73 std::function<
void()>
const& action,
74 std::function<
bool(
void const*)>
const& should_dispatch);
77 GMainContext* main_context,
78 std::shared_ptr<time::Clock>
const& clock,
79 std::shared_ptr<LockableCallback>
const& handler,
80 std::function<
void()>
const& exception_handler,
89 void add(
int fd,
void const* owner, std::function<
void(
int)>
const& handler);
90 void remove_all_owned_by(
void const* owner);
96 GMainContext*
const main_context;
97 std::mutex sources_mutex;
98 std::vector<std::unique_ptr<FdSource>> sources;
107 void add(std::vector<int>
const& sigs, std::function<
void(
int)>
const& handler);
110 class SourceRegistration;
111 struct HandlerElement
113 operator bool()
const {
return !!handler; }
114 std::vector<int> sigs;
115 std::function<void(int)> handler;
118 void dispatch_pending_signal();
119 void ensure_signal_is_handled(
int sig);
120 int read_pending_signal();
121 void dispatch_signal(
int sig);
127 std::mutex handled_signals_mutex;
128 std::unordered_map<int, struct sigaction> handled_signals;
129 std::unique_ptr<SourceRegistration> source_registration;
All things Mir.
Definition: atomic_callback.h:25
GSourceHandle()
Definition: glib_main_loop_sources.cpp:76
~GSourceHandle()
Definition: glib_main_loop_sources.cpp:104
std::chrono::steady_clock::time_point Timestamp
Definition: types.h:29
void add_idle_gsource(GMainContext *main_context, int priority, std::function< void()> const &callback)
void ensure_no_further_dispatch()
Definition: glib_main_loop_sources.cpp:139
GSourceHandle & operator=(GSourceHandle other)
Definition: glib_main_loop_sources.cpp:97
Definition: glib_main_loop_sources.h:49
Definition: glib_main_loop_sources.h:83
Definition: glib_main_loop_sources.h:101
void add_server_action_gsource(GMainContext *main_context, void const *owner, std::function< void()> const &action, std::function< bool(void const *)> const &should_dispatch)
GSourceHandle add_timer_gsource(GMainContext *main_context, std::shared_ptr< time::Clock > const &clock, std::shared_ptr< LockableCallback > const &handler, std::function< void()> const &exception_handler, time::Timestamp target_time)