summaryrefslogtreecommitdiff
path: root/src/events.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/events.cc')
-rw-r--r--src/events.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/events.cc b/src/events.cc
index 6a3190c..edc47db 100644
--- a/src/events.cc
+++ b/src/events.cc
@@ -3,6 +3,11 @@
#include "vec.h"
#include <cstring>
+static inline window_id_t wayc_eventloop_genid(struct eventloop_s *loop) {
+ wayc_notnull(loop);
+ return loop->winid++;
+}
+
bool wayc_eventloop_init(struct eventloop_s *loop) {
wayc_notnull(loop);
memset(loop, 0, sizeof(*loop));
@@ -22,3 +27,18 @@ void wayc_eventloop_deinit(struct eventloop_s *loop) {
wayc_wlstate_deinit(&loop->state);
wayc_vec_deinit(&loop->events);
}
+
+window_id_t wayc_eventloop_register(struct eventloop_s *loop,
+ struct window_s *window) {
+ wayc_notnull(loop);
+ wayc_notnull(window);
+
+ window_id_t winid = wayc_eventloop_genid(loop);
+ wayc_hashmap_insert(&loop->windows, &winid, &window);
+ return winid;
+}
+
+void wayc_eventloop_unregister(struct eventloop_s *loop, window_id_t winid) {
+ wayc_notnull(loop);
+ wayc_hashmap_remove(&loop->windows, &winid);
+} \ No newline at end of file