From 8c759d7abe4ea732fddb2f258d318b32591d1e73 Mon Sep 17 00:00:00 2001 From: "D.B" Date: Fri, 20 Oct 2017 17:49:04 +0200 Subject: Add startup command option to rootston Allows specifying a command to run at startup. --- include/rootston/config.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/rootston') diff --git a/include/rootston/config.h b/include/rootston/config.h index 66347c3c..5fa4890f 100644 --- a/include/rootston/config.h +++ b/include/rootston/config.h @@ -42,6 +42,7 @@ struct roots_config { struct wl_list devices; struct wl_list bindings; char *config_path; + char *startup_cmd; }; struct roots_config *parse_args(int argc, char *argv[]); -- cgit v1.2.3 From 1782d5e7b7dc5e494cfee72b758d5fa8114aecc8 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 20 Oct 2017 23:19:41 -0400 Subject: Implement simple touch support for rootston --- include/rootston/input.h | 22 ++++++++++----- rootston/cursor.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++-- rootston/input.c | 4 +-- rootston/meson.build | 1 + rootston/touch.c | 26 ++++++++++++++++++ 5 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 rootston/touch.c (limited to 'include/rootston') diff --git a/include/rootston/input.h b/include/rootston/input.h index 516104a7..ddd5a05d 100644 --- a/include/rootston/input.h +++ b/include/rootston/input.h @@ -24,18 +24,12 @@ struct roots_keyboard { struct roots_pointer { struct roots_input *input; struct wlr_input_device *device; - // We don't listen to any pointer events directly - they go through - // wlr_cursor struct wl_list link; }; struct roots_touch { struct roots_input *input; struct wlr_input_device *device; - struct wl_listener down; - struct wl_listener up; - struct wl_listener motion; - struct wl_listener cancel; struct wl_list link; }; @@ -70,6 +64,13 @@ struct roots_input_event { struct wlr_input_device *device; }; +struct roots_touch_point { + struct roots_touch *device; + int32_t slot; + double x, y; + struct wl_list link; +}; + struct roots_input { struct roots_config *config; struct roots_server *server; @@ -104,9 +105,16 @@ struct roots_input { struct wl_listener cursor_motion_absolute; struct wl_listener cursor_button; struct wl_listener cursor_axis; + + struct wl_listener cursor_touch_down; + struct wl_listener cursor_touch_up; + struct wl_listener cursor_touch_motion; + struct wl_listener cursor_tool_axis; struct wl_listener cursor_tool_tip; + struct wl_list touch_points; + struct wl_listener pointer_grab_end; struct wl_listener request_set_cursor; @@ -120,6 +128,8 @@ void pointer_add(struct wlr_input_device *device, struct roots_input *input); void pointer_remove(struct wlr_input_device *device, struct roots_input *input); void keyboard_add(struct wlr_input_device *device, struct roots_input *input); void keyboard_remove(struct wlr_input_device *device, struct roots_input *input); +void touch_add(struct wlr_input_device *device, struct roots_input *input); +void touch_remove(struct wlr_input_device *device, struct roots_input *input); void tablet_tool_add(struct wlr_input_device *device, struct roots_input *input); void tablet_tool_remove(struct wlr_input_device *device, struct roots_input *input); diff --git a/rootston/cursor.c b/rootston/cursor.c index b312392d..27a6006b 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -1,4 +1,5 @@ #define _XOPEN_SOURCE 700 +#include #include #include #include @@ -82,8 +83,8 @@ void cursor_update_position(struct roots_input *input, uint32_t time) { double sx, sy; switch (input->mode) { case ROOTS_CURSOR_PASSTHROUGH: - view = view_at(desktop, input->cursor->x, input->cursor->y, &surface, - &sx, &sy); + view = view_at(desktop, input->cursor->x, input->cursor->y, + &surface, &sx, &sy); bool set_compositor_cursor = !view && input->cursor_client; if (view) { struct wl_client *view_client = @@ -286,6 +287,56 @@ static void handle_cursor_button(struct wl_listener *listener, void *data) { (uint32_t)(event->time_usec / 1000), event->button, event->state); } +static void handle_touch_down(struct wl_listener *listener, void *data) { + struct wlr_event_touch_down *event = data; + struct roots_input *input = + wl_container_of(listener, input, cursor_touch_down); + struct roots_touch_point *point = + calloc(1, sizeof(struct roots_touch_point)); + point->device = event->device->data; + point->slot = event->slot; + point->x = event->x_mm / event->width_mm; + point->y = event->y_mm / event->height_mm; + wlr_cursor_warp_absolute(input->cursor, event->device, point->x, point->y); + cursor_update_position(input, (uint32_t)(event->time_usec / 1000)); + wl_list_insert(&input->touch_points, &point->link); + do_cursor_button_press(input, input->cursor, event->device, + (uint32_t)(event->time_usec / 1000), BTN_LEFT, 1); +} + +static void handle_touch_up(struct wl_listener *listener, void *data) { + struct wlr_event_touch_up *event = data; + struct roots_input *input = + wl_container_of(listener, input, cursor_touch_up); + struct roots_touch_point *point; + wl_list_for_each(point, &input->touch_points, link) { + if (point->slot == event->slot) { + wl_list_remove(&point->link); + break; + } + } + do_cursor_button_press(input, input->cursor, event->device, + (uint32_t)(event->time_usec / 1000), BTN_LEFT, 0); +} + +static void handle_touch_motion(struct wl_listener *listener, void *data) { + struct wlr_event_touch_motion *event = data; + struct roots_input *input = + wl_container_of(listener, input, cursor_touch_motion); + struct roots_touch_point *point; + wl_list_for_each(point, &input->touch_points, link) { + if (point->slot == event->slot) { + point->x = event->x_mm / event->width_mm; + point->y = event->y_mm / event->height_mm; + wlr_cursor_warp_absolute(input->cursor, event->device, + point->x, point->y); + cursor_update_position(input, + (uint32_t)(event->time_usec / 1000)); + break; + } + } +} + static void handle_tool_axis(struct wl_listener *listener, void *data) { struct roots_input *input = wl_container_of(listener, input, cursor_tool_axis); struct wlr_event_tablet_tool_axis *event = data; @@ -342,6 +393,9 @@ static void handle_request_set_cursor(struct wl_listener *listener, void cursor_initialize(struct roots_input *input) { struct wlr_cursor *cursor = input->cursor; + + // TODO: Does this belong here + wl_list_init(&input->touch_points); wl_list_init(&input->cursor_motion.link); wl_signal_add(&cursor->events.motion, &input->cursor_motion); @@ -360,6 +414,18 @@ void cursor_initialize(struct roots_input *input) { wl_signal_add(&cursor->events.axis, &input->cursor_axis); input->cursor_axis.notify = handle_cursor_axis; + wl_list_init(&input->cursor_touch_down.link); + wl_signal_add(&cursor->events.touch_down, &input->cursor_touch_down); + input->cursor_touch_down.notify = handle_touch_down; + + wl_list_init(&input->cursor_touch_up.link); + wl_signal_add(&cursor->events.touch_up, &input->cursor_touch_up); + input->cursor_touch_up.notify = handle_touch_up; + + wl_list_init(&input->cursor_touch_motion.link); + wl_signal_add(&cursor->events.touch_motion, &input->cursor_touch_motion); + input->cursor_touch_motion.notify = handle_touch_motion; + wl_list_init(&input->cursor_tool_axis.link); wl_signal_add(&cursor->events.tablet_tool_axis, &input->cursor_tool_axis); input->cursor_tool_axis.notify = handle_tool_axis; diff --git a/rootston/input.c b/rootston/input.c index 86a87e24..1784040c 100644 --- a/rootston/input.c +++ b/rootston/input.c @@ -37,7 +37,7 @@ static void input_add_notify(struct wl_listener *listener, void *data) { pointer_add(device, input); break; case WLR_INPUT_DEVICE_TOUCH: - //touch_add(device, input); + touch_add(device, input); break; case WLR_INPUT_DEVICE_TABLET_TOOL: tablet_tool_add(device, input); @@ -58,7 +58,7 @@ static void input_remove_notify(struct wl_listener *listener, void *data) { pointer_remove(device, input); break; case WLR_INPUT_DEVICE_TOUCH: - //touch_remove(device, input); + touch_remove(device, input); break; case WLR_INPUT_DEVICE_TABLET_TOOL: tablet_tool_remove(device, input); diff --git a/rootston/meson.build b/rootston/meson.build index 7ff79f8e..f2621450 100644 --- a/rootston/meson.build +++ b/rootston/meson.build @@ -9,6 +9,7 @@ sources = [ 'output.c', 'pointer.c', 'tablet_tool.c', + 'touch.c', 'xdg_shell_v6.c', 'wl_shell.c', ] diff --git a/rootston/touch.c b/rootston/touch.c new file mode 100644 index 00000000..f6d9b11a --- /dev/null +++ b/rootston/touch.c @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include "rootston/input.h" + +// TODO: we'll likely want touch events to both control the cursor *and* be +// submitted directly to the seat. + +void touch_add(struct wlr_input_device *device, struct roots_input *input) { + struct roots_touch *touch = calloc(sizeof(struct roots_touch), 1); + device->data = touch; + touch->device = device; + touch->input = input; + wl_list_insert(&input->touch, &touch->link); + wlr_cursor_attach_input_device(input->cursor, device); + cursor_load_config(input->server->config, input->cursor, + input, input->server->desktop); +} + +void touch_remove(struct wlr_input_device *device, struct roots_input *input) { + struct roots_touch *touch = device->data; + wlr_cursor_detach_input_device(input->cursor, device); + wl_list_remove(&touch->link); + free(touch); +} -- cgit v1.2.3 From c8570d0e426c60fb66fba4ccc8e74af73933e615 Mon Sep 17 00:00:00 2001 From: emersion Date: Sat, 21 Oct 2017 12:35:51 +0200 Subject: Remove wl_list_init when using wl_signal_add --- backend/multi/backend.c | 5 ----- examples/pointer.c | 4 ++-- examples/shared.c | 19 ------------------- include/rootston/view.h | 7 ++----- rootston/cursor.c | 12 +----------- rootston/desktop.c | 7 +++---- rootston/input.c | 9 ++------- rootston/keyboard.c | 1 - rootston/output.c | 1 - rootston/wl_shell.c | 19 ++++++------------- rootston/xdg_shell_v6.c | 11 +---------- rootston/xwayland.c | 2 -- types/wlr_seat.c | 4 ---- 13 files changed, 17 insertions(+), 84 deletions(-) (limited to 'include/rootston') diff --git a/backend/multi/backend.c b/backend/multi/backend.c index 5f745c40..ae1d6803 100644 --- a/backend/multi/backend.c +++ b/backend/multi/backend.c @@ -130,11 +130,6 @@ void wlr_multi_backend_add(struct wlr_backend *_multi, sub->output_add.notify = output_add_reemit; sub->output_remove.notify = output_remove_reemit; - wl_list_init(&sub->input_add.link); - wl_list_init(&sub->input_remove.link); - wl_list_init(&sub->output_add.link); - wl_list_init(&sub->output_remove.link); - wl_signal_add(&backend->events.input_add, &sub->input_add); wl_signal_add(&backend->events.input_remove, &sub->input_remove); wl_signal_add(&backend->events.output_add, &sub->output_add); diff --git a/examples/pointer.c b/examples/pointer.c index 238be9b3..92faaf0c 100644 --- a/examples/pointer.c +++ b/examples/pointer.c @@ -284,7 +284,7 @@ int main(int argc, char *argv[]) { state.cursor_motion.notify = handle_cursor_motion; wl_signal_add(&state.cursor->events.motion_absolute, - &state.cursor_motion_absolute); + &state.cursor_motion_absolute); state.cursor_motion_absolute.notify = handle_cursor_motion_absolute; wl_signal_add(&state.cursor->events.button, &state.cursor_button); @@ -308,7 +308,7 @@ int main(int argc, char *argv[]) { // tool events wl_signal_add(&state.cursor->events.tablet_tool_axis, - &state.tablet_tool_axis); + &state.tablet_tool_axis); state.tablet_tool_axis.notify = handle_tablet_tool_axis; struct compositor_state compositor = { 0 }; diff --git a/examples/shared.c b/examples/shared.c index bb1d2737..1fdd5775 100644 --- a/examples/shared.c +++ b/examples/shared.c @@ -60,7 +60,6 @@ static void keyboard_add(struct wlr_input_device *device, struct compositor_stat struct keyboard_state *kbstate = calloc(sizeof(struct keyboard_state), 1); kbstate->device = device; kbstate->compositor = state; - wl_list_init(&kbstate->key.link); kbstate->key.notify = keyboard_key_notify; wl_signal_add(&device->keyboard->events.key, &kbstate->key); wl_list_insert(&state->keyboards, &kbstate->link); @@ -122,10 +121,6 @@ static void pointer_add(struct wlr_input_device *device, struct compositor_state struct pointer_state *pstate = calloc(sizeof(struct pointer_state), 1); pstate->device = device; pstate->compositor = state; - wl_list_init(&pstate->motion.link); - wl_list_init(&pstate->motion_absolute.link); - wl_list_init(&pstate->button.link); - wl_list_init(&pstate->axis.link); pstate->motion.notify = pointer_motion_notify; pstate->motion_absolute.notify = pointer_motion_absolute_notify; pstate->button.notify = pointer_button_notify; @@ -175,10 +170,6 @@ static void touch_add(struct wlr_input_device *device, struct compositor_state * struct touch_state *tstate = calloc(sizeof(struct touch_state), 1); tstate->device = device; tstate->compositor = state; - wl_list_init(&tstate->down.link); - wl_list_init(&tstate->motion.link); - wl_list_init(&tstate->up.link); - wl_list_init(&tstate->cancel.link); tstate->down.notify = touch_down_notify; tstate->motion.notify = touch_motion_notify; tstate->up.notify = touch_up_notify; @@ -219,10 +210,6 @@ static void tablet_tool_add(struct wlr_input_device *device, struct tablet_tool_state *tstate = calloc(sizeof(struct tablet_tool_state), 1); tstate->device = device; tstate->compositor = state; - wl_list_init(&tstate->axis.link); - wl_list_init(&tstate->proximity.link); - wl_list_init(&tstate->tip.link); - wl_list_init(&tstate->button.link); tstate->axis.notify = tablet_tool_axis_notify; tstate->proximity.notify = tablet_tool_proximity_notify; //tstate->tip.notify = tablet_tool_tip_notify; @@ -247,7 +234,6 @@ static void tablet_pad_add(struct wlr_input_device *device, struct tablet_pad_state *pstate = calloc(sizeof(struct tablet_pad_state), 1); pstate->device = device; pstate->compositor = state; - wl_list_init(&pstate->button.link); pstate->button.notify = tablet_pad_button_notify; wl_signal_add(&device->tablet_pad->events.button, &pstate->button); wl_list_insert(&state->tablet_pads, &pstate->link); @@ -436,7 +422,6 @@ static void output_add_notify(struct wl_listener *listener, void *data) { ostate->compositor = state; ostate->frame.notify = output_frame_notify; ostate->resolution.notify = output_resolution_notify; - wl_list_init(&ostate->frame.link); wl_signal_add(&output->events.frame, &ostate->frame); wl_signal_add(&output->events.resolution, &ostate->resolution); wl_list_insert(&state->outputs, &ostate->link); @@ -476,15 +461,11 @@ void compositor_init(struct compositor_state *state) { wl_list_init(&state->touch); wl_list_init(&state->tablet_tools); wl_list_init(&state->tablet_pads); - wl_list_init(&state->input_add.link); state->input_add.notify = input_add_notify; - wl_list_init(&state->input_remove.link); state->input_remove.notify = input_remove_notify; wl_list_init(&state->outputs); - wl_list_init(&state->output_add.link); state->output_add.notify = output_add_notify; - wl_list_init(&state->output_remove.link); state->output_remove.notify = output_remove_notify; struct wlr_backend *wlr = wlr_backend_autocreate(state->display); diff --git a/include/rootston/view.h b/include/rootston/view.h index ad722225..7d297329 100644 --- a/include/rootston/view.h +++ b/include/rootston/view.h @@ -8,13 +8,12 @@ struct roots_wl_shell_surface { struct roots_view *view; + // TODO: Maybe destroy listener should go in roots_view struct wl_listener destroy; struct wl_listener ping_timeout; struct wl_listener request_move; struct wl_listener request_resize; - struct wl_listener request_set_fullscreen; - struct wl_listener request_set_maximized; struct wl_listener surface_commit; }; @@ -25,15 +24,13 @@ struct roots_xdg_surface_v6 { // TODO: Maybe destroy listener should go in roots_view struct wl_listener commit; struct wl_listener destroy; - struct wl_listener ping_timeout; - struct wl_listener request_minimize; struct wl_listener request_move; struct wl_listener request_resize; - struct wl_listener request_show_window_menu; }; struct roots_xwayland_surface { struct roots_view *view; + // TODO: Maybe destroy listener should go in roots_view struct wl_listener destroy; struct wl_listener request_configure; diff --git a/rootston/cursor.c b/rootston/cursor.c index 27a6006b..3be4c2a6 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -393,51 +393,41 @@ static void handle_request_set_cursor(struct wl_listener *listener, void cursor_initialize(struct roots_input *input) { struct wlr_cursor *cursor = input->cursor; - + // TODO: Does this belong here wl_list_init(&input->touch_points); - wl_list_init(&input->cursor_motion.link); wl_signal_add(&cursor->events.motion, &input->cursor_motion); input->cursor_motion.notify = handle_cursor_motion; - wl_list_init(&input->cursor_motion_absolute.link); wl_signal_add(&cursor->events.motion_absolute, &input->cursor_motion_absolute); input->cursor_motion_absolute.notify = handle_cursor_motion_absolute; - wl_list_init(&input->cursor_button.link); wl_signal_add(&cursor->events.button, &input->cursor_button); input->cursor_button.notify = handle_cursor_button; - wl_list_init(&input->cursor_axis.link); wl_signal_add(&cursor->events.axis, &input->cursor_axis); input->cursor_axis.notify = handle_cursor_axis; - wl_list_init(&input->cursor_touch_down.link); wl_signal_add(&cursor->events.touch_down, &input->cursor_touch_down); input->cursor_touch_down.notify = handle_touch_down; - wl_list_init(&input->cursor_touch_up.link); wl_signal_add(&cursor->events.touch_up, &input->cursor_touch_up); input->cursor_touch_up.notify = handle_touch_up; - wl_list_init(&input->cursor_touch_motion.link); wl_signal_add(&cursor->events.touch_motion, &input->cursor_touch_motion); input->cursor_touch_motion.notify = handle_touch_motion; - wl_list_init(&input->cursor_tool_axis.link); wl_signal_add(&cursor->events.tablet_tool_axis, &input->cursor_tool_axis); input->cursor_tool_axis.notify = handle_tool_axis; - wl_list_init(&input->cursor_tool_tip.link); wl_signal_add(&cursor->events.tablet_tool_tip, &input->cursor_tool_tip); input->cursor_tool_tip.notify = handle_tool_tip; wl_signal_add(&input->wl_seat->events.pointer_grab_end, &input->pointer_grab_end); input->pointer_grab_end.notify = handle_pointer_grab_end; - wl_list_init(&input->request_set_cursor.link); wl_signal_add(&input->wl_seat->events.request_set_cursor, &input->request_set_cursor); input->request_set_cursor.notify = handle_request_set_cursor; diff --git a/rootston/desktop.c b/rootston/desktop.c index 641315a8..bf556131 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -203,16 +203,15 @@ struct roots_view *view_at(struct roots_desktop *desktop, double lx, double ly, struct roots_desktop *desktop_create(struct roots_server *server, struct roots_config *config) { struct roots_desktop *desktop = calloc(1, sizeof(struct roots_desktop)); + assert(desktop); wlr_log(L_DEBUG, "Initializing roots desktop"); assert(desktop->views = list_create()); wl_list_init(&desktop->outputs); - wl_list_init(&desktop->output_add.link); - desktop->output_add.notify = output_add_notify; - wl_list_init(&desktop->output_remove.link); - desktop->output_remove.notify = output_remove_notify; + desktop->output_add.notify = output_add_notify; wl_signal_add(&server->backend->events.output_add, &desktop->output_add); + desktop->output_remove.notify = output_remove_notify; wl_signal_add(&server->backend->events.output_remove, &desktop->output_remove); diff --git a/rootston/input.c b/rootston/input.c index 1784040c..28af67a6 100644 --- a/rootston/input.c +++ b/rootston/input.c @@ -91,15 +91,10 @@ struct roots_input *input_create(struct roots_server *server, wl_list_init(&input->touch); wl_list_init(&input->tablet_tools); - wl_list_init(&input->input_add.link); input->input_add.notify = input_add_notify; - wl_list_init(&input->input_remove.link); + wl_signal_add(&server->backend->events.input_add, &input->input_add); input->input_remove.notify = input_remove_notify; - - wl_signal_add(&server->backend->events.input_add, - &input->input_add); - wl_signal_add(&server->backend->events.input_remove, - &input->input_remove); + wl_signal_add(&server->backend->events.input_remove, &input->input_remove); input->cursor = wlr_cursor_create(); cursor_initialize(input); diff --git a/rootston/keyboard.c b/rootston/keyboard.c index aee6b098..f2075d26 100644 --- a/rootston/keyboard.c +++ b/rootston/keyboard.c @@ -130,7 +130,6 @@ void keyboard_add(struct wlr_input_device *device, struct roots_input *input) { device->data = keyboard; keyboard->device = device; keyboard->input = input; - wl_list_init(&keyboard->key.link); keyboard->key.notify = keyboard_key_notify; wl_signal_add(&device->keyboard->events.key, &keyboard->key); wl_list_insert(&input->keyboards, &keyboard->link); diff --git a/rootston/output.c b/rootston/output.c index 39a90fe3..5b7297ae 100644 --- a/rootston/output.c +++ b/rootston/output.c @@ -175,7 +175,6 @@ void output_add_notify(struct wl_listener *listener, void *data) { output->desktop = desktop; output->wlr_output = wlr_output; output->frame.notify = output_frame_notify; - wl_list_init(&output->frame.link); wl_signal_add(&wlr_output->events.frame, &output->frame); wl_list_insert(&desktop->outputs, &output->link); diff --git a/rootston/wl_shell.c b/rootston/wl_shell.c index 2c6047b1..248514f0 100644 --- a/rootston/wl_shell.c +++ b/rootston/wl_shell.c @@ -57,11 +57,8 @@ static void handle_destroy(struct wl_listener *listener, void *data) { struct roots_wl_shell_surface *roots_surface = wl_container_of(listener, roots_surface, destroy); wl_list_remove(&roots_surface->destroy.link); - wl_list_remove(&roots_surface->ping_timeout.link); wl_list_remove(&roots_surface->request_move.link); wl_list_remove(&roots_surface->request_resize.link); - wl_list_remove(&roots_surface->request_set_fullscreen.link); - wl_list_remove(&roots_surface->request_set_maximized.link); view_destroy(roots_surface->view); free(roots_surface); } @@ -88,25 +85,22 @@ void handle_wl_shell_surface(struct wl_listener *listener, void *data) { if (!roots_surface) { return; } - wl_list_init(&roots_surface->destroy.link); roots_surface->destroy.notify = handle_destroy; wl_signal_add(&surface->events.destroy, &roots_surface->destroy); - wl_list_init(&roots_surface->ping_timeout.link); - wl_list_init(&roots_surface->request_move.link); roots_surface->request_move.notify = handle_request_move; wl_signal_add(&surface->events.request_move, &roots_surface->request_move); - wl_list_init(&roots_surface->request_resize.link); roots_surface->request_resize.notify = handle_request_resize; wl_signal_add(&surface->events.request_resize, &roots_surface->request_resize); - wl_list_init(&roots_surface->request_set_fullscreen.link); - wl_list_init(&roots_surface->request_set_maximized.link); - wl_list_init(&roots_surface->surface_commit.link); roots_surface->surface_commit.notify = handle_surface_commit; wl_signal_add(&surface->surface->events.commit, &roots_surface->surface_commit); struct roots_view *view = calloc(1, sizeof(struct roots_view)); + if (!view) { + free(roots_surface); + return; + } view->type = ROOTS_WL_SHELL_VIEW; view->wl_shell_surface = surface; @@ -121,9 +115,8 @@ void handle_wl_shell_surface(struct wl_listener *listener, void *data) { if (surface->state == WLR_WL_SHELL_SURFACE_STATE_TRANSIENT) { // we need to map it relative to the parent - int i = - list_seq_find(desktop->views, - shell_surface_compare_equals, surface->parent); + int i = list_seq_find(desktop->views, shell_surface_compare_equals, + surface->parent); if (i != -1) { struct roots_view *parent = desktop->views->items[i]; view_set_position(view, diff --git a/rootston/xdg_shell_v6.c b/rootston/xdg_shell_v6.c index 1e21fa02..028545df 100644 --- a/rootston/xdg_shell_v6.c +++ b/rootston/xdg_shell_v6.c @@ -74,12 +74,10 @@ static void handle_commit(struct wl_listener *listener, void *data) { static void handle_destroy(struct wl_listener *listener, void *data) { struct roots_xdg_surface_v6 *roots_xdg_surface = wl_container_of(listener, roots_xdg_surface, destroy); + wl_list_remove(&roots_xdg_surface->commit.link); wl_list_remove(&roots_xdg_surface->destroy.link); - wl_list_remove(&roots_xdg_surface->ping_timeout.link); wl_list_remove(&roots_xdg_surface->request_move.link); wl_list_remove(&roots_xdg_surface->request_resize.link); - wl_list_remove(&roots_xdg_surface->request_show_window_menu.link); - wl_list_remove(&roots_xdg_surface->request_minimize.link); view_destroy(roots_xdg_surface->view); free(roots_xdg_surface); } @@ -105,22 +103,15 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) { if (!roots_surface) { return; } - wl_list_init(&roots_surface->commit.link); roots_surface->commit.notify = handle_commit; wl_signal_add(&surface->events.commit, &roots_surface->commit); - wl_list_init(&roots_surface->destroy.link); roots_surface->destroy.notify = handle_destroy; wl_signal_add(&surface->events.destroy, &roots_surface->destroy); - wl_list_init(&roots_surface->ping_timeout.link); - wl_list_init(&roots_surface->request_minimize.link); - wl_list_init(&roots_surface->request_move.link); roots_surface->request_move.notify = handle_request_move; wl_signal_add(&surface->events.request_move, &roots_surface->request_move); - wl_list_init(&roots_surface->request_resize.link); roots_surface->request_resize.notify = handle_request_resize; wl_signal_add(&surface->events.request_resize, &roots_surface->request_resize); - wl_list_init(&roots_surface->request_show_window_menu.link); struct roots_view *view = calloc(1, sizeof(struct roots_view)); view->type = ROOTS_XDG_SHELL_V6_VIEW; diff --git a/rootston/xwayland.c b/rootston/xwayland.c index d7885e94..6ef33403 100644 --- a/rootston/xwayland.c +++ b/rootston/xwayland.c @@ -75,10 +75,8 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) { if (roots_surface == NULL) { return; } - wl_list_init(&roots_surface->destroy.link); roots_surface->destroy.notify = handle_destroy; wl_signal_add(&surface->events.destroy, &roots_surface->destroy); - wl_list_init(&roots_surface->request_configure.link); roots_surface->request_configure.notify = handle_request_configure; wl_signal_add(&surface->events.request_configure, &roots_surface->request_configure); diff --git a/types/wlr_seat.c b/types/wlr_seat.c index ce055520..362c696a 100644 --- a/types/wlr_seat.c +++ b/types/wlr_seat.c @@ -635,17 +635,13 @@ void wlr_seat_attach_keyboard(struct wlr_seat *seat, calloc(1, sizeof(struct wlr_seat_keyboard)); seat_kb->keyboard = kb; seat_kb->seat = seat; - wl_list_init(&seat_kb->key.link); seat_kb->key.notify = keyboard_key_notify; wl_signal_add(&kb->events.key, &seat_kb->key); - wl_list_init(&seat_kb->modifiers.link); seat_kb->modifiers.notify = keyboard_modifiers_notify; wl_signal_add(&kb->events.modifiers, &seat_kb->modifiers); - wl_list_init(&seat_kb->keymap.link); seat_kb->keymap.notify = keyboard_keymap_notify; wl_signal_add(&kb->events.keymap, &seat_kb->keymap); // TODO: update keymap as necessary - wl_list_init(&seat_kb->destroy.link); seat_kb->destroy.notify = keyboard_destroy_notify; wl_signal_add(&dev->events.destroy, &seat_kb->destroy); wl_list_insert(&seat->keyboards, &seat_kb->link); -- cgit v1.2.3