aboutsummaryrefslogtreecommitdiff
path: root/include/window/window.h
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-12-08 02:17:41 +0100
committerdec05eba <dec05eba@protonmail.com>2024-12-08 02:17:41 +0100
commitc259a19b9d8ca646824acad60b599b03252bc1c0 (patch)
treed3c7f3090735b3ae225868d514a9163c02941489 /include/window/window.h
parent655fd3756be4507030aac1d497e579cfc0070f3c (diff)
Refactor windowing from egl to window_x11/window_wayland, yolo
Diffstat (limited to 'include/window/window.h')
-rw-r--r--include/window/window.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/window/window.h b/include/window/window.h
new file mode 100644
index 0000000..7839f6a
--- /dev/null
+++ b/include/window/window.h
@@ -0,0 +1,37 @@
+#ifndef GSR_WINDOW_H
+#define GSR_WINDOW_H
+
+#include "../utils.h"
+#include <stdbool.h>
+
+typedef union _XEvent XEvent;
+typedef struct gsr_window gsr_window;
+
+typedef enum {
+ GSR_DISPLAY_SERVER_X11,
+ GSR_DISPLAY_SERVER_WAYLAND
+} gsr_display_server;
+
+struct gsr_window {
+ void (*destroy)(gsr_window *self);
+ /* Returns true if an event is available */
+ bool (*process_event)(gsr_window *self);
+ XEvent* (*get_event_data)(gsr_window *self); /* can be NULL */
+ gsr_display_server (*get_display_server)(void);
+ void* (*get_display)(gsr_window *self);
+ void* (*get_window)(gsr_window *self);
+ void (*for_each_active_monitor_output_cached)(const gsr_window *self, active_monitor_callback callback, void *userdata);
+ void *priv;
+};
+
+void gsr_window_destroy(gsr_window *self);
+
+/* Returns true if an event is available */
+bool gsr_window_process_event(gsr_window *self);
+XEvent* gsr_window_get_event_data(gsr_window *self);
+gsr_display_server gsr_window_get_display_server(const gsr_window *self);
+void* gsr_window_get_display(gsr_window *self);
+void* gsr_window_get_window(gsr_window *self);
+void gsr_window_for_each_active_monitor_output_cached(const gsr_window *self, active_monitor_callback callback, void *userdata);
+
+#endif /* GSR_WINDOW_H */