mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-26 06:35:58 +01:00
backend/wayland: add error flow in create_wl_seat
This commit is contained in:
parent
36395e5b1c
commit
41bf1c6871
3 changed files with 10 additions and 3 deletions
|
@ -105,7 +105,9 @@ static void registry_global(void *data, struct wl_registry *registry,
|
|||
} else if (strcmp(iface, wl_seat_interface.name) == 0) {
|
||||
struct wl_seat *wl_seat = wl_registry_bind(registry, name,
|
||||
&wl_seat_interface, 5);
|
||||
create_wl_seat(wl_seat, wl);
|
||||
if (!create_wl_seat(wl_seat, wl)) {
|
||||
wl_seat_destroy(wl_seat);
|
||||
}
|
||||
} else if (strcmp(iface, xdg_wm_base_interface.name) == 0) {
|
||||
wl->xdg_wm_base = wl_registry_bind(registry, name,
|
||||
&xdg_wm_base_interface, 1);
|
||||
|
|
|
@ -372,12 +372,17 @@ static struct wlr_wl_input_device *get_wl_input_device_from_input_device(
|
|||
return (struct wlr_wl_input_device *)wlr_dev;
|
||||
}
|
||||
|
||||
void create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl) {
|
||||
bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl) {
|
||||
assert(!wl->seat); // only one seat supported at the moment
|
||||
struct wlr_wl_seat *seat = calloc(1, sizeof(struct wlr_wl_seat));
|
||||
if (!seat) {
|
||||
wlr_log_errno(WLR_ERROR, "Allocation failed");
|
||||
return false;
|
||||
}
|
||||
seat->wl_seat = wl_seat;
|
||||
wl->seat = seat;
|
||||
wl_seat_add_listener(wl_seat, &seat_listener, wl);
|
||||
return true;
|
||||
}
|
||||
|
||||
void destroy_wl_seats(struct wlr_wl_backend *wl) {
|
||||
|
|
|
@ -121,7 +121,7 @@ void create_wl_keyboard(struct wl_keyboard *wl_keyboard, struct wlr_wl_backend *
|
|||
void create_wl_touch(struct wl_touch *wl_touch, struct wlr_wl_backend *wl);
|
||||
struct wlr_wl_input_device *create_wl_input_device(
|
||||
struct wlr_wl_backend *backend, enum wlr_input_device_type type);
|
||||
void create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl);
|
||||
bool create_wl_seat(struct wl_seat *wl_seat, struct wlr_wl_backend *wl);
|
||||
void destroy_wl_seats(struct wlr_wl_backend *wl);
|
||||
|
||||
extern const struct wl_seat_listener seat_listener;
|
||||
|
|
Loading…
Reference in a new issue