uint32_t state)
{
struct ss_seat *seat = data;
+ struct timespec ts;
+
+ timespec_from_msec(&ts, time);
- notify_button(&seat->base, time, button, state);
+ notify_button(&seat->base, &ts, button, state);
notify_pointer_frame(&seat->base);
}
}
static void
-exposay_button(struct weston_pointer_grab *grab, uint32_t time, uint32_t button,
- uint32_t state_w)
+exposay_button(struct weston_pointer_grab *grab, const struct timespec *time,
+ uint32_t button, uint32_t state_w)
{
struct desktop_shell *shell =
container_of(grab, struct desktop_shell, exposay.grab_ptr);
static void
move_grab_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button, uint32_t state_w)
+ const struct timespec *time, uint32_t button, uint32_t state_w)
{
struct shell_grab *shell_grab = container_of(grab, struct shell_grab,
grab);
static void
resize_grab_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button, uint32_t state_w)
+ const struct timespec *time,
+ uint32_t button, uint32_t state_w)
{
struct weston_resize_grab *resize = (struct weston_resize_grab *) grab;
struct weston_pointer *pointer = grab->pointer;
static void
busy_cursor_grab_button(struct weston_pointer_grab *base,
- uint32_t time, uint32_t button, uint32_t state)
+ const struct timespec *time,
+ uint32_t button, uint32_t state)
{
struct shell_grab *grab = (struct shell_grab *) base;
struct shell_surface *shsurf = grab->shsurf;
};
static void
-move_binding(struct weston_pointer *pointer, uint32_t time,
+move_binding(struct weston_pointer *pointer, const struct timespec *time,
uint32_t button, void *data)
{
struct weston_surface *focus;
}
static void
-resize_binding(struct weston_pointer *pointer, uint32_t time,
+resize_binding(struct weston_pointer *pointer, const struct timespec *time,
uint32_t button, void *data)
{
struct weston_surface *focus;
static void
rotate_grab_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button, uint32_t state_w)
+ const struct timespec *time,
+ uint32_t button, uint32_t state_w)
{
struct rotate_grab *rotate =
container_of(grab, struct rotate_grab, base.grab);
}
static void
-rotate_binding(struct weston_pointer *pointer, uint32_t time, uint32_t button,
- void *data)
+rotate_binding(struct weston_pointer *pointer, const struct timespec *time,
+ uint32_t button, void *data)
{
struct weston_surface *focus;
struct weston_surface *base_surface;
}
static void
-click_to_activate_binding(struct weston_pointer *pointer, uint32_t time,
+click_to_activate_binding(struct weston_pointer *pointer,
+ const struct timespec *time,
uint32_t button, void *data)
{
if (pointer->grab != &pointer->default_grab)
static void
pointer_move_workspace_grab_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button,
+ const struct timespec *time, uint32_t button,
uint32_t state_w)
{
if (BTN_LEFT == button &&
}
static void
-click_to_activate_binding(struct weston_pointer *pointer, uint32_t time,
+click_to_activate_binding(struct weston_pointer *pointer,
+ const struct timespec *time,
uint32_t button, void *data)
{
if (pointer->grab != &pointer->default_grab)
#include "libweston-desktop.h"
#include "internal.h"
+#include "shared/timespec-util.h"
struct weston_desktop_seat {
struct wl_listener seat_destroy_listener;
static void
weston_desktop_seat_popup_grab_pointer_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button,
+ const struct timespec *time,
+ uint32_t button,
enum wl_pointer_button_state state)
{
struct weston_desktop_seat *seat =
if (weston_pointer_has_focus_resource(pointer))
weston_pointer_send_button(pointer, time, button, state);
else if (state == WL_POINTER_BUTTON_STATE_RELEASED &&
- (initial_up || (time - grab->pointer->grab_time) > 500))
+ (initial_up ||
+ (timespec_sub_to_msec(time, &grab->pointer->grab_time) > 500)))
weston_desktop_seat_popup_grab_end(seat);
}
void
weston_compositor_run_button_binding(struct weston_compositor *compositor,
struct weston_pointer *pointer,
- uint32_t time, uint32_t button,
+ const struct timespec *time,
+ uint32_t button,
enum wl_pointer_button_state state)
{
struct weston_binding *b, *tmp;
button = BTN_MIDDLE;
if (button) {
- notify_button(peerContext->item.seat, weston_compositor_get_time(), button,
+ timespec_from_msec(&time, weston_compositor_get_time());
+ notify_button(peerContext->item.seat, &time, button,
(flags & PTR_FLAGS_DOWN) ? WL_POINTER_BUTTON_STATE_PRESSED : WL_POINTER_BUTTON_STATE_RELEASED
);
need_frame = true;
{
struct wayland_input *input = data;
enum theme_location location;
+ struct timespec ts;
if (!input->output)
return;
}
if (location == THEME_LOCATION_CLIENT_AREA) {
- notify_button(&input->base, time, button, state);
+ timespec_from_msec(&ts, time);
+ notify_button(&input->base, &ts, button, state);
if (input->seat_version < WL_POINTER_FRAME_SINCE_VERSION)
notify_pointer_frame(&input->base);
}
struct x11_output *output;
struct weston_pointer_axis_event weston_event;
bool is_button_pressed = event->response_type == XCB_BUTTON_PRESS;
+ struct timespec time = { 0 };
assert(event->response_type == XCB_BUTTON_PRESS ||
event->response_type == XCB_BUTTON_RELEASE);
break;
}
- notify_button(&b->core_seat,
- weston_compositor_get_time(), button,
+ timespec_from_msec(&time, weston_compositor_get_time());
+
+ notify_button(&b->core_seat, &time, button,
is_button_pressed ? WL_POINTER_BUTTON_STATE_PRESSED :
WL_POINTER_BUTTON_STATE_RELEASED);
notify_pointer_frame(&b->core_seat);
const struct timespec *time,
struct weston_pointer_motion_event *event);
void (*button)(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button, uint32_t state);
+ const struct timespec *time,
+ uint32_t button, uint32_t state);
void (*axis)(struct weston_pointer_grab *grab,
uint32_t time,
struct weston_pointer_axis_event *event);
wl_fixed_t grab_x, grab_y;
uint32_t grab_button;
uint32_t grab_serial;
- uint32_t grab_time;
+ struct timespec grab_time;
wl_fixed_t x, y;
wl_fixed_t sx, sy;
weston_pointer_has_focus_resource(struct weston_pointer *pointer);
void
weston_pointer_send_button(struct weston_pointer *pointer,
- uint32_t time, uint32_t button, uint32_t state_w);
+ const struct timespec *time,
+ uint32_t button, uint32_t state_w);
void
weston_pointer_send_axis(struct weston_pointer *pointer,
uint32_t time,
notify_motion_absolute(struct weston_seat *seat, const struct timespec *time,
double x, double y);
void
-notify_button(struct weston_seat *seat, uint32_t time, int32_t button,
- enum wl_pointer_button_state state);
+notify_button(struct weston_seat *seat, const struct timespec *time,
+ int32_t button, enum wl_pointer_button_state state);
void
notify_axis(struct weston_seat *seat, uint32_t time,
struct weston_pointer_axis_event *event);
void *data);
typedef void (*weston_button_binding_handler_t)(struct weston_pointer *pointer,
- uint32_t time, uint32_t button,
+ const struct timespec *time,
+ uint32_t button,
void *data);
struct weston_binding *
weston_compositor_add_button_binding(struct weston_compositor *compositor,
enum wl_keyboard_key_state state);
void
weston_compositor_run_button_binding(struct weston_compositor *compositor,
- struct weston_pointer *pointer, uint32_t time,
+ struct weston_pointer *pointer,
+ const struct timespec *time,
uint32_t button,
enum wl_pointer_button_state value);
void
static void
drag_grab_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button, uint32_t state_w)
+ const struct timespec *time,
+ uint32_t button, uint32_t state_w)
{
struct weston_pointer_drag *drag =
container_of(grab, struct weston_pointer_drag, grab);
*/
WL_EXPORT void
weston_pointer_send_button(struct weston_pointer *pointer,
- uint32_t time, uint32_t button,
+ const struct timespec *time, uint32_t button,
enum wl_pointer_button_state state)
{
struct wl_display *display = pointer->seat->compositor->wl_display;
struct wl_list *resource_list;
struct wl_resource *resource;
uint32_t serial;
+ uint32_t msecs;
if (!weston_pointer_has_focus_resource(pointer))
return;
resource_list = &pointer->focus_client->pointer_resources;
serial = wl_display_next_serial(display);
+ msecs = timespec_to_msec(time);
wl_resource_for_each(resource, resource_list)
- wl_pointer_send_button(resource, serial, time, button, state);
+ wl_pointer_send_button(resource, serial, msecs, button, state);
}
static void
default_grab_pointer_button(struct weston_pointer_grab *grab,
- uint32_t time, uint32_t button,
+ const struct timespec *time, uint32_t button,
enum wl_pointer_button_state state)
{
struct weston_pointer *pointer = grab->pointer;
}
WL_EXPORT void
-notify_button(struct weston_seat *seat, uint32_t time, int32_t button,
- enum wl_pointer_button_state state)
+notify_button(struct weston_seat *seat, const struct timespec *time,
+ int32_t button, enum wl_pointer_button_state state)
{
struct weston_compositor *compositor = seat->compositor;
struct weston_pointer *pointer = weston_seat_get_pointer(seat);
weston_compositor_idle_inhibit(compositor);
if (pointer->button_count == 0) {
pointer->grab_button = button;
- pointer->grab_time = time;
+ pointer->grab_time = *time;
pointer->grab_x = pointer->x;
pointer->grab_y = pointer->y;
}
static void
locked_pointer_grab_pointer_button(struct weston_pointer_grab *grab,
- uint32_t time,
+ const struct timespec *time,
uint32_t button,
uint32_t state_w)
{
static void
confined_pointer_grab_pointer_button(struct weston_pointer_grab *grab,
- uint32_t time,
+ const struct timespec *time,
uint32_t button,
uint32_t state_w)
{
libinput_event_pointer_get_button_state(pointer_event);
int seat_button_count =
libinput_event_pointer_get_seat_button_count(pointer_event);
+ struct timespec time;
/* Ignore button events that are not seat wide state changes. */
if ((button_state == LIBINPUT_BUTTON_STATE_PRESSED &&
seat_button_count != 0))
return false;
- notify_button(device->seat,
- libinput_event_pointer_get_time(pointer_event),
+ timespec_from_usec(&time,
+ libinput_event_pointer_get_time_usec(pointer_event));
+
+ notify_button(device->seat, &time,
libinput_event_pointer_get_button(pointer_event),
button_state);
send_button(struct wl_client *client, struct wl_resource *resource,
int32_t button, uint32_t state)
{
+ struct timespec time;
+
struct weston_test *test = wl_resource_get_user_data(resource);
struct weston_seat *seat = get_seat(test);
- notify_button(seat, 100, button, state);
+ timespec_from_msec(&time, 100);
+
+ notify_button(seat, &time, button, state);
}
static void