| From daecf59cc8b294265666482a4766aaa3148c308b Mon Sep 17 00:00:00 2001 |
| From: Khem Raj <raj.khem@gmail.com> |
| Date: Sat, 30 Nov 2019 11:43:32 -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 |
| |
| [Retrieved from: |
| https://github.com/LibVNC/x11vnc/commit/daecf59cc8b294265666482a4766aaa3148c308b] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| src/uinput.c | 25 +++++++++++++++++++++---- |
| 1 file changed, 21 insertions(+), 4 deletions(-) |
| |
| diff --git a/src/uinput.c b/src/uinput.c |
| index 28fbad3..d71bcde 100644 |
| --- a/src/uinput.c |
| +++ b/src/uinput.c |
| @@ -54,6 +54,11 @@ so, delete this exception statement from your version. |
| #include <linux/input.h> |
| #include <linux/uinput.h> |
| |
| +#ifndef input_event_sec |
| +#define input_event_sec time.tv_sec |
| +#define input_event_usec time.tv_usec |
| +#endif |
| + |
| #if !defined(EV_SYN) || !defined(SYN_REPORT) |
| #undef UINPUT_OK |
| #endif |
| @@ -710,6 +715,7 @@ void parse_uinput_str(char *in) { |
| static void ptr_move(int dx, int dy) { |
| #ifdef UINPUT_OK |
| struct input_event ev; |
| + struct timeval tval; |
| int d = direct_rel_fd < 0 ? fd : direct_rel_fd; |
| |
| if (injectable && strchr(injectable, 'M') == NULL) { |
| @@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) { |
| |
| if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d); |
| |
| - gettimeofday(&ev.time, NULL); |
| + gettimeofday(&tval, NULL); |
| + ev.input_event_sec = tval.tv_sec; |
| + ev.input_event_usec = tval.tv_usec; |
| ev.type = EV_REL; |
| ev.code = REL_Y; |
| ev.value = dy; |
| @@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) { |
| static void ptr_abs(int x, int y, int p) { |
| #ifdef UINPUT_OK |
| struct input_event ev; |
| + struct timeval tval; |
| int x0, y0; |
| int d = direct_abs_fd < 0 ? fd : direct_abs_fd; |
| |
| @@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) { |
| |
| if (db) fprintf(stderr, "ptr_abs(%d, %d => %d %d, p=%d) fd=%d\n", x0, y0, x, y, p, d); |
| |
| - gettimeofday(&ev.time, NULL); |
| + gettimeofday(&tval, NULL); |
| + ev.input_event_sec = tval.tv_sec; |
| + ev.input_event_usec = tval.tv_usec; |
| ev.type = EV_ABS; |
| ev.code = ABS_Y; |
| ev.value = y; |
| @@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;} |
| static void button_click(int down, int btn) { |
| #ifdef UINPUT_OK |
| struct input_event ev; |
| + struct timeval tval; |
| int d = direct_btn_fd < 0 ? fd : direct_btn_fd; |
| |
| if (injectable && strchr(injectable, 'B') == NULL) { |
| @@ -959,7 +971,9 @@ static void button_click(int down, int btn) { |
| if (db) fprintf(stderr, "button_click: btn %d %s fd=%d\n", btn, down ? "down" : "up", d); |
| |
| memset(&ev, 0, sizeof(ev)); |
| - gettimeofday(&ev.time, NULL); |
| + gettimeofday(&tval, NULL); |
| + ev.input_event_sec = tval.tv_sec; |
| + ev.input_event_usec = tval.tv_usec; |
| ev.type = EV_KEY; |
| ev.value = down; |
| |
| @@ -1230,6 +1244,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) { |
| void uinput_key_command(int down, int keysym, rfbClientPtr client) { |
| #ifdef UINPUT_OK |
| struct input_event ev; |
| + struct timeval tval; |
| int scancode; |
| allowed_input_t input; |
| int d = direct_key_fd < 0 ? fd : direct_key_fd; |
| @@ -1253,7 +1268,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) { |
| if (db) fprintf(stderr, "uinput_key_command: %d -> %d %s fd=%d\n", keysym, scancode, down ? "down" : "up", d); |
| |
| memset(&ev, 0, sizeof(ev)); |
| - gettimeofday(&ev.time, NULL); |
| + gettimeofday(&tval, NULL); |
| + ev.input_event_sec = tval.tv_sec; |
| + ev.input_event_usec = tval.tv_usec; |
| ev.type = EV_KEY; |
| ev.code = (unsigned char) scancode; |
| ev.value = down; |