aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/wlr_output.c4
-rw-r--r--types/wlr_seat.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/types/wlr_output.c b/types/wlr_output.c
index 06593514..09117441 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -198,6 +198,10 @@ 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 (strcmp(surface->role, "cursor") != 0) {
+ return;
+ }
+
output->cursor.hotspot_x = hotspot_x;
output->cursor.hotspot_y = hotspot_y;
diff --git a/types/wlr_seat.c b/types/wlr_seat.c
index a543936d..d58b2129 100644
--- a/types/wlr_seat.c
+++ b/types/wlr_seat.c
@@ -27,6 +27,11 @@ static void wl_pointer_set_cursor(struct wl_client *client,
struct wlr_surface *surface = NULL;
if (surface_resource != NULL) {
surface = wl_resource_get_user_data(surface_resource);
+
+ if (wlr_surface_set_role(surface, "cursor", resource,
+ WL_POINTER_ERROR_ROLE) < 0) {
+ return;
+ }
}
struct wlr_seat_pointer_request_set_cursor_event *event =