[PATCH weston 1/5] compositor: trivial wl_fixed_t type fixes
Pekka Paalanen
ppaalanen at gmail.com
Mon Jun 4 07:49:11 PDT 2012
This commit requires the libwayland commit "make wl_fixed_t a safe
type".
Track the type changes, making sure the types match. Only the trivial
cases are fixed, where the existing code already did the right thing.
Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
---
src/compositor-wayland.c | 7 +++--
src/compositor-x11.c | 4 ++-
src/evdev.c | 57 +++++++++++++++++++++++++++++-----------------
src/shell.c | 26 +++++++++++---------
4 files changed, 57 insertions(+), 37 deletions(-)
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 9e1f8a3..d3ba965 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -531,7 +531,8 @@ input_handle_pointer_leave(void *data, struct wl_pointer *pointer,
struct wayland_input *input = data;
struct wayland_compositor *c = input->compositor;
- notify_pointer_focus(&c->base.seat->seat, NULL, 0, 0);
+ notify_pointer_focus(&c->base.seat->seat, NULL,
+ wl_fixed_from_int(0), wl_fixed_from_int(0));
}
static void
@@ -542,8 +543,8 @@ input_handle_motion(void *data, struct wl_pointer *pointer,
struct wayland_compositor *c = input->compositor;
notify_motion(&c->base.seat->seat, time,
- x - wl_fixed_from_int(c->border.left),
- y - wl_fixed_from_int(c->border.top));
+ wl_fixed_sub(x, wl_fixed_from_int(c->border.left)),
+ wl_fixed_sub(y, wl_fixed_from_int(c->border.top)));
}
static void
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index d23553e..38999dd 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -726,7 +726,9 @@ x11_compositor_handle_event(int fd, uint32_t mask, void *data)
if (enter_notify->state >= Button1Mask)
break;
output = x11_compositor_find_output(c, enter_notify->event);
- notify_pointer_focus(&c->base.seat->seat, NULL, 0, 0);
+ notify_pointer_focus(&c->base.seat->seat, NULL,
+ wl_fixed_from_int(0),
+ wl_fixed_from_int(0));
break;
case XCB_CLIENT_MESSAGE:
diff --git a/src/evdev.c b/src/evdev.c
index 23d22d7..d141542 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -158,11 +158,11 @@ evdev_process_relative(struct evdev_input_device *device,
{
switch (e->code) {
case REL_X:
- device->rel.dx += wl_fixed_from_int(e->value);
+ device->rel.dx.raw += wl_fixed_from_int(e->value).raw;
device->pending_events |= EVDEV_RELATIVE_MOTION;
break;
case REL_Y:
- device->rel.dy += wl_fixed_from_int(e->value);
+ device->rel.dy.raw += wl_fixed_from_int(e->value).raw;
device->pending_events |= EVDEV_RELATIVE_MOTION;
break;
case REL_WHEEL:
@@ -218,45 +218,60 @@ static void
evdev_flush_motion(struct evdev_input_device *device, uint32_t time)
{
struct weston_seat *master = &device->master->base;
+ wl_fixed_t x, y;
if (!device->pending_events)
return;
if (device->pending_events & EVDEV_RELATIVE_MOTION) {
- notify_motion(&master->seat, time,
- master->seat.pointer->x + device->rel.dx,
- master->seat.pointer->y + device->rel.dy);
+ x = wl_fixed_add(master->seat.pointer->x, device->rel.dx);
+ y = wl_fixed_add(master->seat.pointer->y, device->rel.dy);
+
+ notify_motion(&master->seat, time, x, y);
+
device->pending_events &= ~EVDEV_RELATIVE_MOTION;
- device->rel.dx = 0;
- device->rel.dy = 0;
+ device->rel.dx = wl_fixed_from_int(0);
+ device->rel.dy = wl_fixed_from_int(0);
}
+
if (device->pending_events & EVDEV_ABSOLUTE_MT_DOWN) {
- notify_touch(&master->seat, time,
- device->mt.slot,
- wl_fixed_from_int(device->mt.x[device->mt.slot]),
- wl_fixed_from_int(device->mt.y[device->mt.slot]),
+ x = wl_fixed_from_int(device->mt.x[device->mt.slot]);
+ y = wl_fixed_from_int(device->mt.y[device->mt.slot]);
+
+ notify_touch(&master->seat, time, device->mt.slot, x, y,
WL_TOUCH_DOWN);
+
device->pending_events &= ~EVDEV_ABSOLUTE_MT_DOWN;
device->pending_events &= ~EVDEV_ABSOLUTE_MT_MOTION;
}
+
if (device->pending_events & EVDEV_ABSOLUTE_MT_MOTION) {
- notify_touch(&master->seat, time,
- device->mt.slot,
- wl_fixed_from_int(device->mt.x[device->mt.slot]),
- wl_fixed_from_int(device->mt.y[device->mt.slot]),
+ x = wl_fixed_from_int(device->mt.x[device->mt.slot]);
+ y = wl_fixed_from_int(device->mt.y[device->mt.slot]);
+
+ notify_touch(&master->seat, time, device->mt.slot, x, y,
WL_TOUCH_MOTION);
+
device->pending_events &= ~EVDEV_ABSOLUTE_MT_DOWN;
device->pending_events &= ~EVDEV_ABSOLUTE_MT_MOTION;
}
+
if (device->pending_events & EVDEV_ABSOLUTE_MT_UP) {
- notify_touch(&master->seat, time, device->mt.slot, 0, 0,
+ x = wl_fixed_from_int(0);
+ y = wl_fixed_from_int(0);
+
+ notify_touch(&master->seat, time, device->mt.slot, x, y,
WL_TOUCH_UP);
+
device->pending_events &= ~EVDEV_ABSOLUTE_MT_UP;
}
+
if (device->pending_events & EVDEV_ABSOLUTE_MOTION) {
- notify_motion(&master->seat, time,
- wl_fixed_from_int(device->abs.x),
- wl_fixed_from_int(device->abs.y));
+ x = wl_fixed_from_int(device->abs.x);
+ y = wl_fixed_from_int(device->abs.x);
+
+ notify_motion(&master->seat, time, x, y);
+
device->pending_events &= ~EVDEV_ABSOLUTE_MOTION;
}
}
@@ -474,8 +489,8 @@ evdev_input_device_create(struct evdev_seat *master,
device->mtdev = NULL;
device->devnode = strdup(path);
device->mt.slot = -1;
- device->rel.dx = 0;
- device->rel.dy = 0;
+ device->rel.dx = wl_fixed_from_int(0);
+ device->rel.dy = wl_fixed_from_int(0);
device->dispatch = NULL;
/* Use non-blocking mode so that we can loop on read on
diff --git a/src/shell.c b/src/shell.c
index 40e84b6..1ba0cfc 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -321,15 +321,15 @@ move_grab_motion(struct wl_pointer_grab *grab,
struct wl_pointer *pointer = grab->pointer;
struct shell_surface *shsurf = move->base.shsurf;
struct weston_surface *es;
- int dx = wl_fixed_to_int(pointer->x + move->dx);
- int dy = wl_fixed_to_int(pointer->y + move->dy);
+ wl_fixed_t dx = wl_fixed_add(pointer->x, move->dx);
+ wl_fixed_t dy = wl_fixed_add(pointer->y, move->dy);
if (!shsurf)
return;
es = shsurf->surface;
- weston_surface_configure(es, dx, dy,
+ weston_surface_configure(es, wl_fixed_to_int(dx), wl_fixed_to_int(dy),
es->geometry.width, es->geometry.height);
}
@@ -510,6 +510,7 @@ static int
surface_move(struct shell_surface *shsurf, struct weston_seat *ws)
{
struct weston_move_grab *move;
+ wl_fixed_t pos_x, pos_y;
if (!shsurf)
return -1;
@@ -520,10 +521,11 @@ surface_move(struct shell_surface *shsurf, struct weston_seat *ws)
shell_grab_init(&move->base, &move_grab_interface, shsurf);
- move->dx = wl_fixed_from_double(shsurf->surface->geometry.x) -
- ws->seat.pointer->grab_x;
- move->dy = wl_fixed_from_double(shsurf->surface->geometry.y) -
- ws->seat.pointer->grab_y;
+ pos_x = wl_fixed_from_double(shsurf->surface->geometry.x);
+ pos_y = wl_fixed_from_double(shsurf->surface->geometry.y);
+
+ move->dx = wl_fixed_sub(pos_x, ws->seat.pointer->grab_x);
+ move->dy = wl_fixed_sub(pos_y, ws->seat.pointer->grab_y);
wl_pointer_start_grab(ws->seat.pointer, &move->base.grab);
@@ -578,16 +580,16 @@ resize_grab_motion(struct wl_pointer_grab *grab,
width = resize->width;
if (resize->edges & WL_SHELL_SURFACE_RESIZE_LEFT) {
- width += wl_fixed_to_int(from_x - to_x);
+ width += wl_fixed_to_int(wl_fixed_sub(from_x, to_x));
} else if (resize->edges & WL_SHELL_SURFACE_RESIZE_RIGHT) {
- width += wl_fixed_to_int(to_x - from_x);
+ width += wl_fixed_to_int(wl_fixed_sub(to_x, from_x));
}
height = resize->height;
if (resize->edges & WL_SHELL_SURFACE_RESIZE_TOP) {
- height += wl_fixed_to_int(from_y - to_y);
+ height += wl_fixed_to_int(wl_fixed_sub(from_y, to_y));
} else if (resize->edges & WL_SHELL_SURFACE_RESIZE_BOTTOM) {
- height += wl_fixed_to_int(to_y - from_y);
+ height += wl_fixed_to_int(wl_fixed_sub(to_y, from_y));
}
shsurf->client->send_configure(shsurf->surface,
@@ -1706,7 +1708,7 @@ static void
zoom_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
void *data)
{
- do_zoom(seat, time, key, 0, 0);
+ do_zoom(seat, time, key, 0, wl_fixed_from_int(0));
}
static void
--
1.7.3.4
More information about the wayland-devel
mailing list