diff --git a/backend/wayland/pointer.c b/backend/wayland/pointer.c index b61e32cd0..c1b9c73ef 100644 --- a/backend/wayland/pointer.c +++ b/backend/wayland/pointer.c @@ -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); 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->output = output; diff --git a/backend/x11/output.c b/backend/x11/output.c index 0b63a7088..96b9b49a5 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -669,7 +669,7 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) { wl_list_insert(&x11->outputs, &output->link); 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"); output->touch.output_name = strdup(wlr_output->name); diff --git a/include/wlr/types/wlr_pointer.h b/include/wlr/types/wlr_pointer.h index 756ffa1f6..2bccc301f 100644 --- a/include/wlr/types/wlr_pointer.h +++ b/include/wlr/types/wlr_pointer.h @@ -23,7 +23,7 @@ struct wlr_pointer { const struct wlr_pointer_impl *impl; - char *output_name; + struct wlr_output *output; uint32_t buttons[WLR_POINTER_BUTTONS_CAP]; size_t button_count; diff --git a/tinywl/tinywl.c b/tinywl/tinywl.c index 915938485..a76a844f7 100644 --- a/tinywl/tinywl.c +++ b/tinywl/tinywl.c @@ -286,6 +286,9 @@ static void server_new_pointer(struct tinywl_server *server, * opportunity to do libinput configuration on the device to set * acceleration, etc. */ 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) { diff --git a/types/wlr_pointer.c b/types/wlr_pointer.c index e4ee10c8e..a20077e37 100644 --- a/types/wlr_pointer.c +++ b/types/wlr_pointer.c @@ -50,8 +50,6 @@ void wlr_pointer_finish(struct wlr_pointer *pointer) { } wlr_input_device_finish(&pointer->base); - - free(pointer->output_name); } void wlr_pointer_notify_button(struct wlr_pointer *pointer,