void cursor_update_image(struct seat *seat);
void cursor_init(struct seat *seat);
+void cursor_load(struct seat *seat);
void cursor_emulate_move_absolute(struct seat *seat,
struct wlr_input_device *device,
double x, double y, uint32_t time_msec);
}
void
-cursor_init(struct seat *seat)
+cursor_load(struct seat *seat)
{
const char *xcursor_theme = getenv("XCURSOR_THEME");
const char *xcursor_size = getenv("XCURSOR_SIZE");
uint32_t size = xcursor_size ? atoi(xcursor_size) : 24;
+ if (seat->xcursor_manager) {
+ wlr_xcursor_manager_destroy(seat->xcursor_manager);
+ }
seat->xcursor_manager = wlr_xcursor_manager_create(xcursor_theme, size);
wlr_xcursor_manager_load(seat->xcursor_manager, 1);
"Cursor theme is missing cursor names, using fallback");
cursor_names = cursors_x11;
}
+}
+
+void
+cursor_init(struct seat *seat)
+{
+ cursor_load(seat);
/* Set the initial cursor image so the cursor is visible right away */
cursor_set(seat, LAB_CURSOR_DEFAULT);
seat->input_method_relay = input_method_relay_create(seat);
+ seat->xcursor_manager = NULL;
seat->cursor = wlr_cursor_create();
if (!seat->cursor) {
wlr_log(WLR_ERROR, "unable to create cursor");
{
struct seat *seat = &server->seat;
struct input *input;
+ cursor_load(seat);
wl_list_for_each(input, &seat->inputs, link) {
switch (input->wlr_input_device->type) {
case WLR_INPUT_DEVICE_KEYBOARD: