backend/wayland: add error flow in create_wl_seat
This commit is contained in:
parent
36395e5b1c
commit
41bf1c6871
|
@ -105,7 +105,9 @@ static void registry_global(void *data, struct wl_registry *registry,
|
||||||
} else if (strcmp(iface, wl_seat_interface.name) == 0) {
|
} else if (strcmp(iface, wl_seat_interface.name) == 0) {
|
||||||
struct wl_seat *wl_seat = wl_registry_bind(registry, name,
|
struct wl_seat *wl_seat = wl_registry_bind(registry, name,
|
||||||
&wl_seat_interface, 5);
|
&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) {
|
} else if (strcmp(iface, xdg_wm_base_interface.name) == 0) {
|
||||||
wl->xdg_wm_base = wl_registry_bind(registry, name,
|
wl->xdg_wm_base = wl_registry_bind(registry, name,
|
||||||
&xdg_wm_base_interface, 1);
|
&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;
|
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
|
assert(!wl->seat); // only one seat supported at the moment
|
||||||
struct wlr_wl_seat *seat = calloc(1, sizeof(struct wlr_wl_seat));
|
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;
|
seat->wl_seat = wl_seat;
|
||||||
wl->seat = seat;
|
wl->seat = seat;
|
||||||
wl_seat_add_listener(wl_seat, &seat_listener, wl);
|
wl_seat_add_listener(wl_seat, &seat_listener, wl);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void destroy_wl_seats(struct wlr_wl_backend *wl) {
|
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);
|
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_input_device *create_wl_input_device(
|
||||||
struct wlr_wl_backend *backend, enum wlr_input_device_type type);
|
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);
|
void destroy_wl_seats(struct wlr_wl_backend *wl);
|
||||||
|
|
||||||
extern const struct wl_seat_listener seat_listener;
|
extern const struct wl_seat_listener seat_listener;
|
||||||
|
|
Loading…
Reference in New Issue