19 #ifndef MIR_GLIB_MAIN_LOOP_SOURCES_H_
20 #define MIR_GLIB_MAIN_LOOP_SOURCES_H_
30 #include <unordered_map>
43 GSourceHandle(GSource* gsource, std::function<
void(GSource*)>
const& pre_destruction_hook);
48 operator GSource*()
const;
52 std::function<void(GSource*)> pre_destruction_hook;
56 GMainContext* main_context,
int priority, std::function<
void()>
const& callback);
59 GMainContext* main_context,
61 std::function<
void()>
const& action,
62 std::function<
bool(
void const*)>
const& should_dispatch);
65 GMainContext* main_context,
66 std::shared_ptr<time::Clock>
const& clock,
67 std::function<
void()>
const& handler,
68 std::function<
void()>
const& lock,
69 std::function<
void()>
const& unlock,
78 void add(
int fd,
void const* owner, std::function<
void(
int)>
const& handler);
85 GMainContext*
const main_context;
86 std::mutex sources_mutex;
87 std::vector<std::unique_ptr<FdSource>> sources;
96 void add(std::vector<int>
const& sigs, std::function<
void(
int)>
const& handler);
99 class SourceRegistration;
100 struct HandlerElement
102 operator bool()
const {
return !!handler; }
103 std::vector<int> sigs;
104 std::function<void(int)> handler;
107 void dispatch_pending_signal();
108 void ensure_signal_is_handled(
int sig);
109 int read_pending_signal();
110 void dispatch_signal(
int sig);
116 std::mutex handled_signals_mutex;
117 std::unordered_map<int, struct sigaction> handled_signals;
118 std::unique_ptr<SourceRegistration> source_registration;
All things Mir.
Definition: buffer_stream.h:37
SignalSources(FdSources &fd_sources)
GSourceHandle()
Definition: glib_main_loop_sources.cpp:77
~GSourceHandle()
Definition: glib_main_loop_sources.cpp:105
void add(std::vector< int > const &sigs, std::function< void(int)> const &handler)
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)
GSourceHandle add_timer_gsource(GMainContext *main_context, std::shared_ptr< time::Clock > const &clock, std::function< void()> const &handler, std::function< void()> const &lock, std::function< void()> const &unlock, time::Timestamp target_time)
GSourceHandle & operator=(GSourceHandle other)
Definition: glib_main_loop_sources.cpp:98
Definition: glib_main_loop_sources.h:39
Definition: glib_main_loop_sources.h:72
Definition: glib_main_loop_sources.h:90
void add(int fd, void const *owner, std::function< void(int)> const &handler)
void add_server_action_gsource(GMainContext *main_context, void const *owner, std::function< void()> const &action, std::function< bool(void const *)> const &should_dispatch)
void remove_all_owned_by(void const *owner)
FdSources(GMainContext *main_context)