diff options
author | emersion <contact@emersion.fr> | 2018-04-30 10:55:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-30 10:55:25 +0100 |
commit | 509d38425c33524c77bfb4aa89676d57c21fcd11 (patch) | |
tree | 7ee2138da910973fa5a7d8722ec400679d5d5bb2 /backend/x11/output.c | |
parent | a0f490306395ac3705c00ecc85b4a0bba721886e (diff) | |
parent | 178ac8bffee3c76de39e6c0bf37838b58cb7280f (diff) |
Merge pull request #930 from emersion/input-device-output-name
Add wlr_input_device.output_name
Diffstat (limited to 'backend/x11/output.c')
-rw-r--r-- | backend/x11/output.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/backend/x11/output.c b/backend/x11/output.c index 1f61c5e9..c619d226 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -1,6 +1,9 @@ +#define _POSIX_C_SOURCE 200809L #include <assert.h> #include <stdlib.h> +#include <string.h> #include <wlr/interfaces/wlr_output.h> +#include <wlr/interfaces/wlr_pointer.h> #include <wlr/util/log.h> #include "backend/x11.h" #include "util/signal.h" @@ -59,6 +62,8 @@ static void output_destroy(struct wlr_output *wlr_output) { struct wlr_x11_output *output = (struct wlr_x11_output *)wlr_output; struct wlr_x11_backend *x11 = output->x11; + wlr_input_device_destroy(&output->pointer_dev); + wl_list_remove(&output->link); wl_event_source_remove(output->frame_timer); wlr_egl_destroy_surface(&x11->egl, output->surf); @@ -155,11 +160,19 @@ struct wlr_output *wlr_x11_output_create(struct wlr_backend *backend) { struct wl_event_loop *ev = wl_display_get_event_loop(x11->wl_display); output->frame_timer = wl_event_loop_add_timer(ev, signal_frame, output); + wl_list_insert(&x11->outputs, &output->link); + wl_event_source_timer_update(output->frame_timer, output->frame_delay); wlr_output_update_enabled(wlr_output, true); - wl_list_insert(&x11->outputs, &output->link); + wlr_input_device_init(&output->pointer_dev, WLR_INPUT_DEVICE_POINTER, + &input_device_impl, "X11 pointer", 0, 0); + wlr_pointer_init(&output->pointer, &pointer_impl); + output->pointer_dev.pointer = &output->pointer; + output->pointer_dev.output_name = strdup(wlr_output->name); + wlr_signal_emit_safe(&x11->backend.events.new_output, wlr_output); + wlr_signal_emit_safe(&x11->backend.events.new_input, &output->pointer_dev); return wlr_output; } |