output: fix blurred hw cursors with fractional scaling
The scaling factor was being implicitly cast to an int. Closes: https://github.com/swaywm/sway/issues/4927
This commit is contained in:
parent
d10f8a98ec
commit
5f092c55d1
|
@ -906,7 +906,7 @@ struct wlr_output_mode *wlr_drm_connector_add_mode(struct wlr_output *output,
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool drm_connector_set_cursor(struct wlr_output *output,
|
static bool drm_connector_set_cursor(struct wlr_output *output,
|
||||||
struct wlr_texture *texture, int32_t scale,
|
struct wlr_texture *texture, float scale,
|
||||||
enum wl_output_transform transform,
|
enum wl_output_transform transform,
|
||||||
int32_t hotspot_x, int32_t hotspot_y, bool update_texture) {
|
int32_t hotspot_x, int32_t hotspot_y, bool update_texture) {
|
||||||
struct wlr_drm_connector *conn = get_drm_connector_from_output(output);
|
struct wlr_drm_connector *conn = get_drm_connector_from_output(output);
|
||||||
|
|
|
@ -309,7 +309,7 @@ static void output_rollback(struct wlr_output *wlr_output) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool output_set_cursor(struct wlr_output *wlr_output,
|
static bool output_set_cursor(struct wlr_output *wlr_output,
|
||||||
struct wlr_texture *texture, int32_t scale,
|
struct wlr_texture *texture, float scale,
|
||||||
enum wl_output_transform transform,
|
enum wl_output_transform transform,
|
||||||
int32_t hotspot_x, int32_t hotspot_y, bool update_texture) {
|
int32_t hotspot_x, int32_t hotspot_y, bool update_texture) {
|
||||||
struct wlr_wl_output *output = get_wl_output_from_output(wlr_output);
|
struct wlr_wl_output *output = get_wl_output_from_output(wlr_output);
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
struct wlr_output_impl {
|
struct wlr_output_impl {
|
||||||
bool (*set_cursor)(struct wlr_output *output, struct wlr_texture *texture,
|
bool (*set_cursor)(struct wlr_output *output, struct wlr_texture *texture,
|
||||||
int32_t scale, enum wl_output_transform transform,
|
float scale, enum wl_output_transform transform,
|
||||||
int32_t hotspot_x, int32_t hotspot_y, bool update_texture);
|
int32_t hotspot_x, int32_t hotspot_y, bool update_texture);
|
||||||
bool (*move_cursor)(struct wlr_output *output, int x, int y);
|
bool (*move_cursor)(struct wlr_output *output, int x, int y);
|
||||||
void (*destroy)(struct wlr_output *output);
|
void (*destroy)(struct wlr_output *output);
|
||||||
|
|
|
@ -928,7 +928,7 @@ static void output_cursor_update_visible(struct wlr_output_cursor *cursor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool output_cursor_attempt_hardware(struct wlr_output_cursor *cursor) {
|
static bool output_cursor_attempt_hardware(struct wlr_output_cursor *cursor) {
|
||||||
int32_t scale = cursor->output->scale;
|
float scale = cursor->output->scale;
|
||||||
enum wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
enum wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
||||||
struct wlr_texture *texture = cursor->texture;
|
struct wlr_texture *texture = cursor->texture;
|
||||||
if (cursor->surface != NULL) {
|
if (cursor->surface != NULL) {
|
||||||
|
|
Loading…
Reference in New Issue