diff options
Diffstat (limited to 'example/shared.h')
-rw-r--r-- | example/shared.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/example/shared.h b/example/shared.h new file mode 100644 index 00000000..6d533443 --- /dev/null +++ b/example/shared.h @@ -0,0 +1,131 @@ +#ifndef _EXAMPLE_SHARED_H +#define _EXAMPLE_SHARED_H +#define _POSIX_C_SOURCE 199309L +#include <time.h> +#include <stdbool.h> +#include <xkbcommon/xkbcommon.h> +#include <wayland-server-protocol.h> +#include <wlr/backend.h> +#include <wlr/session.h> +#include <wlr/types.h> + +struct output_state { + struct compositor_state *compositor; + struct wlr_output *output; + struct wl_listener frame; + struct timespec last_frame; + struct wl_list link; + void *data; +}; + +struct keyboard_state { + struct compositor_state *compositor; + struct wlr_input_device *device; + struct wl_listener key; + struct wl_list link; + struct xkb_keymap *keymap; + struct xkb_state *xkb_state; + xkb_led_index_t leds[WLR_LED_LAST]; + void *data; +}; + +struct pointer_state { + struct compositor_state *compositor; + struct wlr_input_device *device; + struct wl_listener motion; + struct wl_listener motion_absolute; + struct wl_listener button; + struct wl_listener axis; + struct wl_list link; + void *data; +}; + +struct touch_state { + struct compositor_state *compositor; + struct wlr_input_device *device; + struct wl_listener down; + struct wl_listener up; + struct wl_listener motion; + struct wl_listener cancel; + struct wl_list link; + void *data; +}; + +struct tablet_tool_state { + struct compositor_state *compositor; + struct wlr_input_device *device; + struct wl_listener axis; + struct wl_listener proximity; + struct wl_listener tip; + struct wl_listener button; + struct wl_list link; + void *data; +}; + +struct tablet_pad_state { + struct compositor_state *compositor; + struct wlr_input_device *device; + struct wl_listener button; + struct wl_list link; + void *data; +}; + +struct compositor_state { + void (*output_add_cb)(struct output_state *s); + void (*keyboard_add_cb)(struct keyboard_state *s); + void (*output_frame_cb)(struct output_state *s, struct timespec *ts); + void (*output_remove_cb)(struct output_state *s); + void (*keyboard_remove_cb)(struct keyboard_state *s); + void (*keyboard_key_cb)(struct keyboard_state *s, xkb_keysym_t sym, + enum wlr_key_state key_state); + void (*pointer_motion_cb)(struct pointer_state *s, + double d_x, double d_y); + void (*pointer_button_cb)(struct pointer_state *s, + uint32_t button, enum wlr_button_state state); + void (*pointer_axis_cb)(struct pointer_state *s, + enum wlr_axis_source source, + enum wlr_axis_orientation orientation, + double delta); + void (*touch_down_cb)(struct touch_state *s, int32_t slot, + double x, double y, double width, double height); + void (*touch_motion_cb)(struct touch_state *s, int32_t slot, + double x, double y, double width, double height); + void (*touch_up_cb)(struct touch_state *s, int32_t slot); + void (*touch_cancel_cb)(struct touch_state *s, int32_t slot); + void (*tool_axis_cb)(struct tablet_tool_state *s, + struct wlr_tablet_tool_axis *event); + void (*tool_proximity_cb)(struct tablet_tool_state *s, + enum wlr_tablet_tool_proximity_state proximity); + void (*tool_tip_cb)(struct tablet_tool_state *s, + enum wlr_tablet_tool_tip_state state); + void (*tool_button_cb)(struct tablet_tool_state *s, + uint32_t button, enum wlr_button_state state); + void (*pad_button_cb)(struct tablet_pad_state *s, + uint32_t button, enum wlr_button_state state); + + struct wl_display *display; + struct wl_event_loop *event_loop; + struct wlr_backend *backend; + struct wlr_session *session; + + struct wl_list keyboards; + struct wl_list pointers; + struct wl_list touch; + struct wl_list tablet_tools; + struct wl_list tablet_pads; + struct wl_listener input_add; + struct wl_listener input_remove; + + struct timespec last_frame; + struct wl_listener output_add; + struct wl_listener output_remove; + struct wl_list outputs; + + bool exit; + void *data; +}; + +void compositor_init(struct compositor_state *state); +void compositor_run(struct compositor_state *state); + +#endif |