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:
Simon Ser 2020-04-10 11:04:21 +02:00 committed by Drew DeVault
parent d10f8a98ec
commit 5f092c55d1
4 changed files with 4 additions and 4 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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) {