diff options
| -rw-r--r-- | types/wlr_cursor.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/types/wlr_cursor.c b/types/wlr_cursor.c index 40528f13..cf8f7359 100644 --- a/types/wlr_cursor.c +++ b/types/wlr_cursor.c @@ -6,6 +6,7 @@  #include <stdlib.h>  #include <wayland-server-core.h>  #include <wlr/types/wlr_cursor.h> +#include <wlr/types/wlr_fractional_scale_v1.h>  #include <wlr/types/wlr_input_device.h>  #include <wlr/types/wlr_output_layout.h>  #include <wlr/types/wlr_output.h> @@ -544,6 +545,16 @@ static void cursor_output_cursor_update(struct wlr_cursor_output_cursor *output_  		} else {  			wlr_surface_send_leave(surface, output);  		} + +		float scale = 1; +		struct wlr_surface_output *surface_output; +		wl_list_for_each(surface_output, &surface->current_outputs, link) { +			if (surface_output->output->scale > scale) { +				scale = surface_output->output->scale; +			} +		} +		wlr_fractional_scale_v1_notify_scale(surface, scale); +		wlr_surface_set_preferred_buffer_scale(surface, ceil(scale));  	} else if (cur->state->xcursor_name != NULL) {  		struct wlr_xcursor_manager *manager = cur->state->xcursor_manager;  		const char *name = cur->state->xcursor_name;  | 
