struct wl_listener button;
struct wl_listener destroy;
} handlers;
+ struct wl_list link; /* seat.tablet_pads */
};
void tablet_pad_init(struct seat *seat, struct wlr_input_device *wlr_input_device);
struct wl_listener button;
struct wl_listener destroy;
} handlers;
+ struct wl_list link; /* seat.tablets */
};
void tablet_init(struct seat *seat, struct wlr_input_device *wlr_input_device);
struct wl_listener touch_motion;
struct wl_listener touch_frame;
+ struct wl_list tablets;
struct wl_list tablet_tools;
+ struct wl_list tablet_pads;
struct wl_listener constraint_commit;
struct wl_listener pressed_surface_destroy;
struct drawing_tablet_pad *pad =
wl_container_of(listener, pad, handlers.destroy);
+ wl_list_remove(&pad->link);
wl_list_remove(&pad->handlers.button.link);
wl_list_remove(&pad->handlers.destroy.link);
free(pad);
pad->tablet->data = pad;
CONNECT_SIGNAL(pad->tablet, &pad->handlers, button);
CONNECT_SIGNAL(wlr_device, &pad->handlers, destroy);
+ wl_list_insert(&seat->tablet_pads, &pad->link);
}
struct drawing_tablet *tablet =
wl_container_of(listener, tablet, handlers.destroy);
+ wl_list_remove(&tablet->link);
wl_list_remove(&tablet->handlers.tip.link);
wl_list_remove(&tablet->handlers.button.link);
wl_list_remove(&tablet->handlers.proximity.link);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, tip);
CONNECT_SIGNAL(tablet->tablet, &tablet->handlers, button);
CONNECT_SIGNAL(wlr_device, &tablet->handlers, destroy);
+ wl_list_insert(&seat->tablets, &tablet->link);
}
}
wlr_cursor_attach_output_layout(seat->cursor, server->output_layout);
+ wl_list_init(&seat->tablets);
wl_list_init(&seat->tablet_tools);
+ wl_list_init(&seat->tablet_pads);
input_handlers_init(seat);
}