From 0b66557f2e924023b12006b58d8e86149c745aed Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 30 Nov 2019 20:34:33 -0800 Subject: [PATCH] Fix build on 32bit arches with 64bit time_t time element is deprecated on new input_event structure in kernel's input.h [1] [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f Upstream-Status: Pending Signed-off-by: Khem Raj --- inputdrivers/linux_input/linux_input.c | 36 ++++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/inputdrivers/linux_input/linux_input.c b/inputdrivers/linux_input/linux_input.c index 7e9a6ad..03deebc 100644 --- a/inputdrivers/linux_input/linux_input.c +++ b/inputdrivers/linux_input/linux_input.c @@ -42,6 +42,11 @@ typedef unsigned long kernel_ulong_t; #include +#ifndef input_event_sec +#define input_event_sec time.tv_sec +#define input_event_usec time.tv_usec +#endif + #ifndef KEY_OK /* Linux kernel 2.5.42+ defines additional keys in linux/input.h */ #include "input_fake.h" @@ -754,7 +759,8 @@ translate_event( const LinuxInputData *data, DFBInputEvent *devt ) { devt->flags = DIEF_TIMESTAMP; - devt->timestamp = levt->time; + devt->timestamp.tv_sec = levt->input_event_sec; + devt->timestamp.tv_usec = levt->input_event_usec; switch (levt->type) { case EV_KEY: @@ -2139,7 +2145,8 @@ touchpad_translate( struct touchpad_fsm_state *state, int abs, rel; devt->flags = DIEF_TIMESTAMP | (dfb_config->linux_input_touch_abs ? DIEF_AXISABS : DIEF_AXISREL); - devt->timestamp = levt->time; + devt->timestamp.tv_sec = levt->input_event_sec; + devt->timestamp.tv_usec = levt->input_event_usec; devt->type = DIET_AXISMOTION; switch (levt->code) { @@ -2204,7 +2211,7 @@ touchpad_fsm( struct touchpad_fsm_state *state, DFBInputEvent *devt ) { struct timeval timeout = { 0, 125000 }; - + struct timeval tval; /* select() timeout? */ if (!levt) { /* Check if button release is due. */ @@ -2223,6 +2230,8 @@ touchpad_fsm( struct touchpad_fsm_state *state, return 0; } + tval.tv_sec = levt->input_event_sec; + tval.tv_usec = levt->input_event_usec; /* More or less ignore these events for now */ if ((levt->type == EV_SYN && levt->code == SYN_REPORT) || (levt->type == EV_ABS && levt->code == ABS_PRESSURE) || @@ -2233,7 +2242,7 @@ touchpad_fsm( struct touchpad_fsm_state *state, /* Check if button release is due. */ if (state->fsm_state == TOUCHPAD_FSM_DRAG_START && - timeout_passed( &state->timeout, &levt->time )) { + timeout_passed( &state->timeout, &tval )) { devt->flags = DIEF_TIMESTAMP; devt->timestamp = state->timeout; /* timeout of levt->time? */ devt->type = DIET_BUTTONRELEASE; @@ -2255,7 +2264,8 @@ touchpad_fsm( struct touchpad_fsm_state *state, case TOUCHPAD_FSM_START: if (touchpad_finger_landing( levt )) { state->fsm_state = TOUCHPAD_FSM_MAIN; - state->timeout = levt->time; + state->timeout.tv_sec = levt->input_event_sec; + state->timeout.tv_usec = levt->input_event_usec; timeout_add( &state->timeout, &timeout ); } return 0; @@ -2268,15 +2278,17 @@ touchpad_fsm( struct touchpad_fsm_state *state, } } else if (touchpad_finger_leaving( levt )) { - if (!timeout_passed( &state->timeout, &levt->time )) { + if (!timeout_passed( &state->timeout, &tval )) { devt->flags = DIEF_TIMESTAMP; - devt->timestamp = levt->time; + devt->timestamp.tv_sec = levt->input_event_sec; + devt->timestamp.tv_usec = levt->input_event_usec; devt->type = DIET_BUTTONPRESS; devt->button = DIBI_FIRST; touchpad_fsm_init( state ); state->fsm_state = TOUCHPAD_FSM_DRAG_START; - state->timeout = levt->time; + state->timeout.tv_sec = levt->input_event_sec; + state->timeout.tv_usec = levt->input_event_usec; timeout_add( &state->timeout, &timeout ); return 1; } @@ -2287,7 +2299,7 @@ touchpad_fsm( struct touchpad_fsm_state *state, return 0; case TOUCHPAD_FSM_DRAG_START: - if (timeout_passed( &state->timeout, &levt->time )){ + if (timeout_passed( &state->timeout, &tval )){ devt->flags = DIEF_TIMESTAMP; devt->timestamp = state->timeout; /* timeout of levt->time? */ devt->type = DIET_BUTTONRELEASE; @@ -2299,7 +2311,8 @@ touchpad_fsm( struct touchpad_fsm_state *state, else { if (touchpad_finger_landing( levt )) { state->fsm_state = TOUCHPAD_FSM_DRAG_MAIN; - state->timeout = levt->time; + state->timeout.tv_sec = levt->input_event_sec; + state->timeout.tv_usec = levt->input_event_usec; timeout_add( &state->timeout, &timeout ); } } @@ -2314,7 +2327,8 @@ touchpad_fsm( struct touchpad_fsm_state *state, } else if (touchpad_finger_leaving( levt )) { devt->flags = DIEF_TIMESTAMP; - devt->timestamp = levt->time; + devt->timestamp.tv_sec = levt->input_event_sec; + devt->timestamp.tv_usec = levt->input_event_usec; devt->type = DIET_BUTTONRELEASE; devt->button = DIBI_FIRST;