[PATCH wayland] cursor: Expose hotspot values as fixed point
Rob Bradford
robert.bradford at intel.com
Tue Apr 16 09:04:21 PDT 2013
From: Rob Bradford <rob at linux.intel.com>
The Wayland protocol specifies that the values to be passed in for the cursor
hotspot should be fixed point. Unfortunately weston was expecting integers -
since most clients pass the values from the cursor API into the set_cursor
call we can minimize the impact of fixing the bug in weston by exposing the
values fixed point.
Bug spotted by Henri Tuhola <henri.tuhola at gmail.com>
---
cursor/wayland-cursor.c | 8 ++++----
cursor/wayland-cursor.h | 5 +++--
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c
index 25e51c2..e6e464a 100644
--- a/cursor/wayland-cursor.c
+++ b/cursor/wayland-cursor.c
@@ -220,8 +220,8 @@ wl_cursor_create_from_data(struct cursor_metadata *metadata,
image->buffer = NULL;
image->image.width = metadata->width;
image->image.height = metadata->height;
- image->image.hotspot_x = metadata->hotspot_x;
- image->image.hotspot_y = metadata->hotspot_y;
+ image->image.hotspot_x = wl_fixed_from_int(metadata->hotspot_x);
+ image->image.hotspot_y = wl_fixed_from_int(metadata->hotspot_y);
image->image.delay = 0;
size = metadata->width * metadata->height * sizeof(uint32_t);
@@ -280,8 +280,8 @@ wl_cursor_create_from_xcursor_images(XcursorImages *images,
image->image.width = images->images[i]->width;
image->image.height = images->images[i]->height;
- image->image.hotspot_x = images->images[i]->xhot;
- image->image.hotspot_y = images->images[i]->yhot;
+ image->image.hotspot_x = wl_fixed_from_int(images->images[i]->xhot);
+ image->image.hotspot_y = wl_fixed_from_int(images->images[i]->yhot);
image->image.delay = images->images[i]->delay;
cursor->total_delay += image->image.delay;
diff --git a/cursor/wayland-cursor.h b/cursor/wayland-cursor.h
index c7548ae..836f6ed 100644
--- a/cursor/wayland-cursor.h
+++ b/cursor/wayland-cursor.h
@@ -24,6 +24,7 @@
#define WAYLAND_CURSOR_H
#include <stdint.h>
+#include <wayland-util.h>
#ifdef __cplusplus
extern "C" {
@@ -34,8 +35,8 @@ struct wl_cursor_theme;
struct wl_cursor_image {
uint32_t width; /* actual width */
uint32_t height; /* actual height */
- uint32_t hotspot_x; /* hot spot x (must be inside image) */
- uint32_t hotspot_y; /* hot spot y (must be inside image) */
+ wl_fixed_t hotspot_x; /* hot spot x (must be inside image) */
+ wl_fixed_t hotspot_y; /* hot spot y (must be inside image) */
uint32_t delay; /* animation delay to next frame (ms) */
};
--
1.8.1.4
More information about the wayland-devel
mailing list