1*4882a593SmuzhiyunFrom daecf59cc8b294265666482a4766aaa3148c308b Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Khem Raj <raj.khem@gmail.com> 3*4882a593SmuzhiyunDate: Sat, 30 Nov 2019 11:43:32 -0800 4*4882a593SmuzhiyunSubject: [PATCH] Fix build on 32bit arches with 64bit time_t 5*4882a593Smuzhiyun 6*4882a593Smuzhiyuntime element is deprecated on new input_event structure in kernel's 7*4882a593Smuzhiyuninput.h [1] 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun[Retrieved from: 12*4882a593Smuzhiyunhttps://github.com/LibVNC/x11vnc/commit/daecf59cc8b294265666482a4766aaa3148c308b] 13*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 14*4882a593Smuzhiyun--- 15*4882a593Smuzhiyun src/uinput.c | 25 +++++++++++++++++++++---- 16*4882a593Smuzhiyun 1 file changed, 21 insertions(+), 4 deletions(-) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyundiff --git a/src/uinput.c b/src/uinput.c 19*4882a593Smuzhiyunindex 28fbad3..d71bcde 100644 20*4882a593Smuzhiyun--- a/src/uinput.c 21*4882a593Smuzhiyun+++ b/src/uinput.c 22*4882a593Smuzhiyun@@ -54,6 +54,11 @@ so, delete this exception statement from your version. 23*4882a593Smuzhiyun #include <linux/input.h> 24*4882a593Smuzhiyun #include <linux/uinput.h> 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun+#ifndef input_event_sec 27*4882a593Smuzhiyun+#define input_event_sec time.tv_sec 28*4882a593Smuzhiyun+#define input_event_usec time.tv_usec 29*4882a593Smuzhiyun+#endif 30*4882a593Smuzhiyun+ 31*4882a593Smuzhiyun #if !defined(EV_SYN) || !defined(SYN_REPORT) 32*4882a593Smuzhiyun #undef UINPUT_OK 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun@@ -710,6 +715,7 @@ void parse_uinput_str(char *in) { 35*4882a593Smuzhiyun static void ptr_move(int dx, int dy) { 36*4882a593Smuzhiyun #ifdef UINPUT_OK 37*4882a593Smuzhiyun struct input_event ev; 38*4882a593Smuzhiyun+ struct timeval tval; 39*4882a593Smuzhiyun int d = direct_rel_fd < 0 ? fd : direct_rel_fd; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun if (injectable && strchr(injectable, 'M') == NULL) { 42*4882a593Smuzhiyun@@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) { 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d); 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun- gettimeofday(&ev.time, NULL); 47*4882a593Smuzhiyun+ gettimeofday(&tval, NULL); 48*4882a593Smuzhiyun+ ev.input_event_sec = tval.tv_sec; 49*4882a593Smuzhiyun+ ev.input_event_usec = tval.tv_usec; 50*4882a593Smuzhiyun ev.type = EV_REL; 51*4882a593Smuzhiyun ev.code = REL_Y; 52*4882a593Smuzhiyun ev.value = dy; 53*4882a593Smuzhiyun@@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) { 54*4882a593Smuzhiyun static void ptr_abs(int x, int y, int p) { 55*4882a593Smuzhiyun #ifdef UINPUT_OK 56*4882a593Smuzhiyun struct input_event ev; 57*4882a593Smuzhiyun+ struct timeval tval; 58*4882a593Smuzhiyun int x0, y0; 59*4882a593Smuzhiyun int d = direct_abs_fd < 0 ? fd : direct_abs_fd; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun@@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) { 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun if (db) fprintf(stderr, "ptr_abs(%d, %d => %d %d, p=%d) fd=%d\n", x0, y0, x, y, p, d); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun- gettimeofday(&ev.time, NULL); 66*4882a593Smuzhiyun+ gettimeofday(&tval, NULL); 67*4882a593Smuzhiyun+ ev.input_event_sec = tval.tv_sec; 68*4882a593Smuzhiyun+ ev.input_event_usec = tval.tv_usec; 69*4882a593Smuzhiyun ev.type = EV_ABS; 70*4882a593Smuzhiyun ev.code = ABS_Y; 71*4882a593Smuzhiyun ev.value = y; 72*4882a593Smuzhiyun@@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;} 73*4882a593Smuzhiyun static void button_click(int down, int btn) { 74*4882a593Smuzhiyun #ifdef UINPUT_OK 75*4882a593Smuzhiyun struct input_event ev; 76*4882a593Smuzhiyun+ struct timeval tval; 77*4882a593Smuzhiyun int d = direct_btn_fd < 0 ? fd : direct_btn_fd; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun if (injectable && strchr(injectable, 'B') == NULL) { 80*4882a593Smuzhiyun@@ -959,7 +971,9 @@ static void button_click(int down, int btn) { 81*4882a593Smuzhiyun if (db) fprintf(stderr, "button_click: btn %d %s fd=%d\n", btn, down ? "down" : "up", d); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun memset(&ev, 0, sizeof(ev)); 84*4882a593Smuzhiyun- gettimeofday(&ev.time, NULL); 85*4882a593Smuzhiyun+ gettimeofday(&tval, NULL); 86*4882a593Smuzhiyun+ ev.input_event_sec = tval.tv_sec; 87*4882a593Smuzhiyun+ ev.input_event_usec = tval.tv_usec; 88*4882a593Smuzhiyun ev.type = EV_KEY; 89*4882a593Smuzhiyun ev.value = down; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun@@ -1230,6 +1244,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) { 92*4882a593Smuzhiyun void uinput_key_command(int down, int keysym, rfbClientPtr client) { 93*4882a593Smuzhiyun #ifdef UINPUT_OK 94*4882a593Smuzhiyun struct input_event ev; 95*4882a593Smuzhiyun+ struct timeval tval; 96*4882a593Smuzhiyun int scancode; 97*4882a593Smuzhiyun allowed_input_t input; 98*4882a593Smuzhiyun int d = direct_key_fd < 0 ? fd : direct_key_fd; 99*4882a593Smuzhiyun@@ -1253,7 +1268,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) { 100*4882a593Smuzhiyun if (db) fprintf(stderr, "uinput_key_command: %d -> %d %s fd=%d\n", keysym, scancode, down ? "down" : "up", d); 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun memset(&ev, 0, sizeof(ev)); 103*4882a593Smuzhiyun- gettimeofday(&ev.time, NULL); 104*4882a593Smuzhiyun+ gettimeofday(&tval, NULL); 105*4882a593Smuzhiyun+ ev.input_event_sec = tval.tv_sec; 106*4882a593Smuzhiyun+ ev.input_event_usec = tval.tv_usec; 107*4882a593Smuzhiyun ev.type = EV_KEY; 108*4882a593Smuzhiyun ev.code = (unsigned char) scancode; 109*4882a593Smuzhiyun ev.value = down; 110