mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 09:10:04 +01:00
Adjust for 64bit time_t for 32bit architectures
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
29785df999
commit
5dc1a7ebd3
5 changed files with 89 additions and 15 deletions
|
|
@ -240,6 +240,7 @@ endif
|
||||||
# necessary bits.
|
# necessary bits.
|
||||||
util_headers = [
|
util_headers = [
|
||||||
'util-bits.h',
|
'util-bits.h',
|
||||||
|
'util-input-event.h',
|
||||||
'util-list.h',
|
'util-list.h',
|
||||||
'util-macros.h',
|
'util-macros.h',
|
||||||
'util-matrix.h',
|
'util-matrix.h',
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "linux/input.h"
|
#include "linux/input.h"
|
||||||
|
|
||||||
|
#include "util-input-event.h"
|
||||||
#include "evdev-mt-touchpad.h"
|
#include "evdev-mt-touchpad.h"
|
||||||
|
|
||||||
#define DEFAULT_BUTTON_ENTER_TIMEOUT ms2us(100)
|
#define DEFAULT_BUTTON_ENTER_TIMEOUT ms2us(100)
|
||||||
|
|
@ -1141,14 +1142,12 @@ tp_notify_clickpadbutton(struct tp_dispatch *tp,
|
||||||
if (tp->buttons.trackpoint) {
|
if (tp->buttons.trackpoint) {
|
||||||
if (is_topbutton) {
|
if (is_topbutton) {
|
||||||
struct evdev_dispatch *dispatch = tp->buttons.trackpoint->dispatch;
|
struct evdev_dispatch *dispatch = tp->buttons.trackpoint->dispatch;
|
||||||
struct input_event event;
|
struct input_event event, syn_report;
|
||||||
struct input_event syn_report = {{ 0, 0 }, EV_SYN, SYN_REPORT, 0 };
|
int value;
|
||||||
|
|
||||||
event.time = us2tv(time);
|
value = (state == LIBINPUT_BUTTON_STATE_PRESSED) ? 1 : 0;
|
||||||
event.type = EV_KEY;
|
event = input_event_init(time, EV_KEY, button, value);
|
||||||
event.code = button;
|
syn_report = input_event_init(time, EV_SYN, SYN_REPORT, 0);
|
||||||
event.value = (state == LIBINPUT_BUTTON_STATE_PRESSED) ? 1 : 0;
|
|
||||||
syn_report.time = event.time;
|
|
||||||
dispatch->interface->process(dispatch,
|
dispatch->interface->process(dispatch,
|
||||||
tp->buttons.trackpoint,
|
tp->buttons.trackpoint,
|
||||||
&event,
|
&event,
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@
|
||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
#include "libinput-private.h"
|
#include "libinput-private.h"
|
||||||
#include "quirks.h"
|
#include "quirks.h"
|
||||||
|
#include "util-input-event.h"
|
||||||
|
|
||||||
#if HAVE_LIBWACOM
|
#if HAVE_LIBWACOM
|
||||||
#include <libwacom/libwacom.h>
|
#include <libwacom/libwacom.h>
|
||||||
|
|
@ -939,7 +940,7 @@ evdev_print_event(struct evdev_device *device,
|
||||||
{
|
{
|
||||||
static uint32_t offset = 0;
|
static uint32_t offset = 0;
|
||||||
static uint32_t last_time = 0;
|
static uint32_t last_time = 0;
|
||||||
uint32_t time = us2ms(tv2us(&e->time));
|
uint32_t time = us2ms(input_event_time(e));
|
||||||
|
|
||||||
if (offset == 0) {
|
if (offset == 0) {
|
||||||
offset = time;
|
offset = time;
|
||||||
|
|
@ -971,7 +972,7 @@ static inline void
|
||||||
evdev_process_event(struct evdev_device *device, struct input_event *e)
|
evdev_process_event(struct evdev_device *device, struct input_event *e)
|
||||||
{
|
{
|
||||||
struct evdev_dispatch *dispatch = device->dispatch;
|
struct evdev_dispatch *dispatch = device->dispatch;
|
||||||
uint64_t time = tv2us(&e->time);
|
uint64_t time = input_event_time(e);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
evdev_print_event(device, e);
|
evdev_print_event(device, e);
|
||||||
|
|
|
||||||
69
src/util-input-event.h
Normal file
69
src/util-input-event.h
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2019 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "util-time.h"
|
||||||
|
#include <linux/input.h>
|
||||||
|
|
||||||
|
static inline struct input_event
|
||||||
|
input_event_init(uint64_t time,
|
||||||
|
unsigned int type,
|
||||||
|
unsigned int code,
|
||||||
|
int value)
|
||||||
|
{
|
||||||
|
struct input_event ev;
|
||||||
|
struct timeval tval = us2tv(time);
|
||||||
|
|
||||||
|
ev.input_event_sec = tval.tv_sec;
|
||||||
|
ev.input_event_usec = tval.tv_usec;
|
||||||
|
ev.type = type;
|
||||||
|
ev.code = code;
|
||||||
|
ev.value = value;
|
||||||
|
|
||||||
|
return ev;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
input_event_time(const struct input_event *e)
|
||||||
|
{
|
||||||
|
struct timeval tval;
|
||||||
|
|
||||||
|
tval.tv_sec = e->input_event_sec;
|
||||||
|
tval.tv_usec = e->input_event_usec;
|
||||||
|
|
||||||
|
return tv2us(&tval);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
input_event_set_time(struct input_event *e,
|
||||||
|
uint64_t time)
|
||||||
|
{
|
||||||
|
struct timeval tval = us2tv(time);
|
||||||
|
|
||||||
|
e->input_event_sec = tval.tv_sec;
|
||||||
|
e->input_event_usec = tval.tv_usec;
|
||||||
|
}
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
#include "builddir.h"
|
#include "builddir.h"
|
||||||
#include "util-list.h"
|
#include "util-list.h"
|
||||||
#include "util-time.h"
|
#include "util-time.h"
|
||||||
|
#include "util-input-event.h"
|
||||||
#include "util-macros.h"
|
#include "util-macros.h"
|
||||||
|
|
||||||
static const int FILE_VERSION_NUMBER = 1;
|
static const int FILE_VERSION_NUMBER = 1;
|
||||||
|
|
@ -199,8 +200,9 @@ print_evdev_event(struct record_context *ctx, struct input_event *ev)
|
||||||
const char *cname;
|
const char *cname;
|
||||||
bool was_modified = false;
|
bool was_modified = false;
|
||||||
char desc[1024];
|
char desc[1024];
|
||||||
|
uint64_t time = input_event_time(ev) - ctx->offset;
|
||||||
|
|
||||||
ev->time = us2tv(tv2us(&ev->time) - ctx->offset);
|
input_event_set_time(ev, time);
|
||||||
|
|
||||||
/* Don't leak passwords unless the user wants to */
|
/* Don't leak passwords unless the user wants to */
|
||||||
if (!ctx->show_keycodes)
|
if (!ctx->show_keycodes)
|
||||||
|
|
@ -218,7 +220,7 @@ print_evdev_event(struct record_context *ctx, struct input_event *ev)
|
||||||
static unsigned long last_ms = 0;
|
static unsigned long last_ms = 0;
|
||||||
unsigned long time, dt;
|
unsigned long time, dt;
|
||||||
|
|
||||||
time = us2ms(tv2us(&ev->time));
|
time = us2ms(input_event_time(ev));
|
||||||
dt = time - last_ms;
|
dt = time - last_ms;
|
||||||
last_ms = time;
|
last_ms = time;
|
||||||
|
|
||||||
|
|
@ -242,8 +244,8 @@ print_evdev_event(struct record_context *ctx, struct input_event *ev)
|
||||||
|
|
||||||
iprintf(ctx,
|
iprintf(ctx,
|
||||||
"- [%3lu, %6u, %3d, %3d, %7d] # %s\n",
|
"- [%3lu, %6u, %3d, %3d, %7d] # %s\n",
|
||||||
ev->time.tv_sec,
|
ev->input_event_sec,
|
||||||
(unsigned int)ev->time.tv_usec,
|
(unsigned int)ev->input_event_usec,
|
||||||
ev->type,
|
ev->type,
|
||||||
ev->code,
|
ev->code,
|
||||||
ev->value,
|
ev->value,
|
||||||
|
|
@ -271,16 +273,18 @@ handle_evdev_frame(struct record_context *ctx, struct record_device *d)
|
||||||
while (libevdev_next_event(evdev,
|
while (libevdev_next_event(evdev,
|
||||||
LIBEVDEV_READ_FLAG_NORMAL,
|
LIBEVDEV_READ_FLAG_NORMAL,
|
||||||
&e) == LIBEVDEV_READ_STATUS_SUCCESS) {
|
&e) == LIBEVDEV_READ_STATUS_SUCCESS) {
|
||||||
|
uint64_t time;
|
||||||
|
|
||||||
if (ctx->offset == 0)
|
if (ctx->offset == 0)
|
||||||
ctx->offset = tv2us(&e.time);
|
ctx->offset = input_event_time(&e);
|
||||||
|
|
||||||
if (d->nevents == d->events_sz)
|
if (d->nevents == d->events_sz)
|
||||||
resize(d->events, d->events_sz);
|
resize(d->events, d->events_sz);
|
||||||
|
|
||||||
event = &d->events[d->nevents++];
|
event = &d->events[d->nevents++];
|
||||||
event->type = EVDEV;
|
event->type = EVDEV;
|
||||||
event->time = tv2us(&e.time) - ctx->offset;
|
time = input_event_time(&e);
|
||||||
|
input_event_set_time(&e, time - ctx->offset);
|
||||||
event->u.evdev = e;
|
event->u.evdev = e;
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue