diff options
| -rw-r--r-- | types/wlr_output.c | 4 | ||||
| -rw-r--r-- | types/wlr_seat.c | 5 | 
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 = | 
