aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2017-10-14 12:21:36 +0200
committeremersion <contact@emersion.fr>2017-10-14 12:21:36 +0200
commit8fd4ae5de86b62e482e338113e94f23ee183d28d (patch)
tree4e4e22dabe5511617add2d12075e168b4c55c04b
parent29abf93bb6a52101a53ece0b23e3b24c593a737e (diff)
Fix cursor role name, fix segfault when surface->resource is NULL
-rw-r--r--rootston/cursor.c4
-rw-r--r--types/wlr_output.c2
-rw-r--r--types/wlr_seat.c2
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;
}