From 8fd4ae5de86b62e482e338113e94f23ee183d28d Mon Sep 17 00:00:00 2001 From: emersion Date: Sat, 14 Oct 2017 12:21:36 +0200 Subject: [PATCH] Fix cursor role name, fix segfault when surface->resource is NULL --- rootston/cursor.c | 4 ++-- types/wlr_output.c | 2 +- types/wlr_seat.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rootston/cursor.c b/rootston/cursor.c index 4c3a9947..03189587 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -306,8 +306,8 @@ static void handle_request_set_cursor(struct wl_listener *listener, struct wlr_surface *focused_surface = event->seat_handle->wlr_seat->pointer_state.focused_surface; - bool ok = focused_surface != NULL; - if (focused_surface != NULL) { + bool ok = focused_surface != NULL && focused_surface->resource != NULL; + if (ok) { struct wl_client *focused_client = wl_resource_get_client(focused_surface->resource); ok = event->client == focused_client; diff --git a/types/wlr_output.c b/types/wlr_output.c index b416f9de..bd4799c4 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -231,7 +231,7 @@ static void handle_cursor_surface_destroy(struct wl_listener *listener, void wlr_output_set_cursor_surface(struct wlr_output *output, struct wlr_surface *surface, int32_t hotspot_x, int32_t hotspot_y) { - if (surface && strcmp(surface->role, "cursor") != 0) { + if (surface && strcmp(surface->role, "wl_pointer-cursor") != 0) { return; } diff --git a/types/wlr_seat.c b/types/wlr_seat.c index ef81655c..aea4196b 100644 --- a/types/wlr_seat.c +++ b/types/wlr_seat.c @@ -28,7 +28,7 @@ static void wl_pointer_set_cursor(struct wl_client *client, if (surface_resource != NULL) { surface = wl_resource_get_user_data(surface_resource); - if (wlr_surface_set_role(surface, "cursor", resource, + if (wlr_surface_set_role(surface, "wl_pointer-cursor", resource, WL_POINTER_ERROR_ROLE) < 0) { return; }