Merge branch 'input-device-output' into 'master'

Draft: pointer,touch: store the output instead of its name

See merge request wlroots/wlroots!4167
This commit is contained in:
Kirill Primak 2025-01-11 00:37:12 +00:00
commit 2f49d01779
5 changed files with 6 additions and 5 deletions

View file

@ -469,7 +469,7 @@ void create_pointer(struct wlr_wl_seat *seat, struct wlr_wl_output *output) {
snprintf(name, sizeof(name), "wayland-pointer-%s", seat->name); snprintf(name, sizeof(name), "wayland-pointer-%s", seat->name);
wlr_pointer_init(&pointer->wlr_pointer, &wl_pointer_impl, name); wlr_pointer_init(&pointer->wlr_pointer, &wl_pointer_impl, name);
pointer->wlr_pointer.output_name = strdup(output->wlr_output.name); pointer->wlr_pointer.output = &output->wlr_output;
pointer->seat = seat; pointer->seat = seat;
pointer->output = output; pointer->output = output;

View file

@ -669,7 +669,7 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) {
wl_list_insert(&x11->outputs, &output->link); wl_list_insert(&x11->outputs, &output->link);
wlr_pointer_init(&output->pointer, &x11_pointer_impl, "x11-pointer"); wlr_pointer_init(&output->pointer, &x11_pointer_impl, "x11-pointer");
output->pointer.output_name = strdup(wlr_output->name); output->pointer.output = wlr_output;
wlr_touch_init(&output->touch, &x11_touch_impl, "x11-touch"); wlr_touch_init(&output->touch, &x11_touch_impl, "x11-touch");
output->touch.output_name = strdup(wlr_output->name); output->touch.output_name = strdup(wlr_output->name);

View file

@ -23,7 +23,7 @@ struct wlr_pointer {
const struct wlr_pointer_impl *impl; const struct wlr_pointer_impl *impl;
char *output_name; struct wlr_output *output;
uint32_t buttons[WLR_POINTER_BUTTONS_CAP]; uint32_t buttons[WLR_POINTER_BUTTONS_CAP];
size_t button_count; size_t button_count;

View file

@ -286,6 +286,9 @@ static void server_new_pointer(struct tinywl_server *server,
* opportunity to do libinput configuration on the device to set * opportunity to do libinput configuration on the device to set
* acceleration, etc. */ * acceleration, etc. */
wlr_cursor_attach_input_device(server->cursor, device); wlr_cursor_attach_input_device(server->cursor, device);
struct wlr_pointer *wlr_pointer = wlr_pointer_from_input_device(device);
wlr_cursor_map_input_to_output(server->cursor, device, wlr_pointer->output);
} }
static void server_new_input(struct wl_listener *listener, void *data) { static void server_new_input(struct wl_listener *listener, void *data) {

View file

@ -50,8 +50,6 @@ void wlr_pointer_finish(struct wlr_pointer *pointer) {
} }
wlr_input_device_finish(&pointer->base); wlr_input_device_finish(&pointer->base);
free(pointer->output_name);
} }
void wlr_pointer_notify_button(struct wlr_pointer *pointer, void wlr_pointer_notify_button(struct wlr_pointer *pointer,