1 #ifndef TYPES_WLR_TABLET_V2_H 2 #define TYPES_WLR_TABLET_V2_H 3 4 #include "tablet-unstable-v2-protocol.h" 5 #include <wayland-server-core.h> 6 #include <wlr/types/wlr_tablet_v2.h> 7 8 struct wlr_tablet_seat_v2 { 9 struct wl_list link; // wlr_tablet_manager_v2::seats 10 struct wlr_seat *wlr_seat; 11 struct wlr_tablet_manager_v2 *manager; 12 13 struct wl_list tablets; // wlr_tablet_v2_tablet::link 14 struct wl_list tools; 15 struct wl_list pads; 16 17 struct wl_list clients; // wlr_tablet_seat_v2_client::link 18 19 struct wl_listener seat_destroy; 20 }; 21 22 struct wlr_tablet_seat_client_v2 { 23 struct wl_list seat_link; 24 struct wl_list client_link; 25 struct wl_client *wl_client; 26 struct wl_resource *resource; 27 28 struct wlr_tablet_manager_client_v2 *client; 29 struct wlr_seat_client *seat_client; 30 31 struct wl_listener seat_client_destroy; 32 33 struct wl_list tools; //wlr_tablet_tool_client_v2::link 34 struct wl_list tablets; //wlr_tablet_client_v2::link 35 struct wl_list pads; //wlr_tablet_pad_client_v2::link 36 }; 37 38 struct wlr_tablet_client_v2 { 39 struct wl_list seat_link; // wlr_tablet_seat_client_v2::tablet 40 struct wl_list tablet_link; // wlr_tablet_v2_tablet::clients 41 struct wl_client *client; 42 struct wl_resource *resource; 43 }; 44 45 struct wlr_tablet_pad_client_v2 { 46 struct wl_list seat_link; 47 struct wl_list pad_link; 48 struct wl_client *client; 49 struct wl_resource *resource; 50 struct wlr_tablet_v2_tablet_pad *pad; 51 struct wlr_tablet_seat_client_v2 *seat; 52 53 size_t button_count; 54 55 size_t group_count; 56 struct wl_resource **groups; 57 58 size_t ring_count; 59 struct wl_resource **rings; 60 61 size_t strip_count; 62 struct wl_resource **strips; 63 }; 64 65 struct wlr_tablet_tool_client_v2 { 66 struct wl_list seat_link; 67 struct wl_list tool_link; 68 struct wl_client *client; 69 struct wl_resource *resource; 70 struct wlr_tablet_v2_tablet_tool *tool; 71 struct wlr_tablet_seat_client_v2 *seat; 72 73 struct wl_event_source *frame_source; 74 }; 75 76 struct wlr_tablet_client_v2 *tablet_client_from_resource(struct wl_resource *resource); 77 void destroy_tablet_v2(struct wl_resource *resource); 78 void add_tablet_client(struct wlr_tablet_seat_client_v2 *seat, struct wlr_tablet_v2_tablet *tablet); 79 80 void destroy_tablet_pad_v2(struct wl_resource *resource); 81 struct wlr_tablet_pad_client_v2 *tablet_pad_client_from_resource(struct wl_resource *resource); 82 void add_tablet_pad_client(struct wlr_tablet_seat_client_v2 *seat, struct wlr_tablet_v2_tablet_pad *pad); 83 84 void destroy_tablet_tool_v2(struct wl_resource *resource); 85 struct wlr_tablet_tool_client_v2 *tablet_tool_client_from_resource(struct wl_resource *resource); 86 void add_tablet_tool_client(struct wlr_tablet_seat_client_v2 *seat, struct wlr_tablet_v2_tablet_tool *tool); 87 88 struct wlr_tablet_seat_client_v2 *tablet_seat_client_from_resource(struct wl_resource *resource); 89 void tablet_seat_client_v2_destroy(struct wl_resource *resource); 90 struct wlr_tablet_seat_v2 *get_or_create_tablet_seat( 91 struct wlr_tablet_manager_v2 *manager, 92 struct wlr_seat *wlr_seat); 93 94 #endif /* TYPES_WLR_TABLET_V2_H */ 95