static void popup_grab_motion(struct weston_pointer_grab *grab, uint32_t time) { struct wl_resource *resource = grab->pointer->focus_resource; if (resource) { wl_fixed_t sx, sy; weston_surface_from_global_fixed(grab->pointer->focus, grab->pointer->x, grab->pointer->y, &sx, &sy); wl_pointer_send_motion(resource, time, sx, sy); } }
static void default_grab_motion(struct weston_pointer_grab *grab, uint32_t time) { struct weston_pointer *pointer = grab->pointer; wl_fixed_t sx, sy; struct wl_list *resource_list; struct wl_resource *resource; resource_list = &pointer->focus_resource_list; wl_resource_for_each(resource, resource_list) { weston_surface_from_global_fixed(pointer->focus, pointer->x, pointer->y, &sx, &sy); wl_pointer_send_motion(resource, time, sx, sy); }
static void surface_to_from_global(void *data) { struct weston_compositor *compositor = data; struct weston_surface *surface; float x, y; wl_fixed_t fx, fy; int32_t ix, iy; surface = weston_surface_create(compositor); weston_surface_configure(surface, 5, 10, 50, 50); weston_surface_update_transform(surface); weston_surface_to_global_float(surface, 33, 22, &x, &y); assert(x == 38 && y == 32); weston_surface_to_global_float(surface, -8, -2, &x, &y); assert(x == -3 && y == 8); weston_surface_to_global_fixed(surface, wl_fixed_from_int(12), wl_fixed_from_int(5), &fx, &fy); assert(fx == wl_fixed_from_int(17) && fy == wl_fixed_from_int(15)); weston_surface_from_global_float(surface, 38, 32, &x, &y); assert(x == 33 && y == 22); weston_surface_from_global_float(surface, 42, 5, &x, &y); assert(x == 37 && y == -5); weston_surface_from_global_fixed(surface, wl_fixed_from_int(21), wl_fixed_from_int(100), &fx, &fy); assert(fx == wl_fixed_from_int(16) && fy == wl_fixed_from_int(90)); weston_surface_from_global(surface, 0, 0, &ix, &iy); assert(ix == -5 && iy == -10); weston_surface_from_global(surface, 5, 10, &ix, &iy); assert(ix == 0 && iy == 0); wl_display_terminate(compositor->wl_display); }