From b56953f49d11436598fde1d663fd4afcfcc10997 Mon Sep 17 00:00:00 2001 From: Damjan Jovanovic <damjan.jov@gmail.com> Date: Mon, 6 Nov 2006 08:28:29 +0200 Subject: [PATCH] dinput: Changed select to poll. --- dlls/dinput/joystick_linux.c | 12 +++++++----- dlls/dinput/joystick_linuxinput.c | 13 +++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 9ffab1f7b4e..c43bfa9651c 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -53,6 +53,9 @@ #ifdef HAVE_LINUX_JOYSTICK_H # include <linux/joystick.h> #endif +#ifdef HAVE_SYS_POLL_H +# include <sys/poll.h> +#endif #include "wine/debug.h" #include "wine/unicode.h" @@ -897,8 +900,7 @@ static LONG calculate_pov(JoystickImpl *This, int index) } static void joy_polldev(JoystickImpl *This) { - struct timeval tv; - fd_set readfds; + struct pollfd plfd; struct js_event jse; TRACE("(%p)\n", This); @@ -907,9 +909,9 @@ static void joy_polldev(JoystickImpl *This) { return; } while (1) { - memset(&tv,0,sizeof(tv)); - FD_ZERO(&readfds);FD_SET(This->joyfd,&readfds); - if (1>select(This->joyfd+1,&readfds,NULL,NULL,&tv)) + plfd.fd = This->joyfd; + plfd.events = POLLIN; + if (poll(&plfd,1,0) != 1) return; /* we have one event, so we can read */ if (sizeof(jse)!=read(This->joyfd,&jse,sizeof(jse))) { diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index 85d1fdf4a95..d7d413902dc 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -48,6 +48,9 @@ # define HAVE_CORRECT_LINUXINPUT_H # endif #endif +#ifdef HAVE_SYS_POLL_H +# include <sys/poll.h> +#endif #include "wine/debug.h" #include "wine/unicode.h" @@ -860,8 +863,7 @@ static void calculate_ids(LPDIDATAFORMAT df) } static void joy_polldev(JoystickImpl *This) { - struct timeval tv; - fd_set readfds; + struct pollfd plfd; struct input_event ie; int btn, offset; @@ -869,11 +871,10 @@ static void joy_polldev(JoystickImpl *This) { return; while (1) { - memset(&tv,0,sizeof(tv)); - FD_ZERO(&readfds); - FD_SET(This->joyfd,&readfds); + plfd.fd = This->joyfd; + plfd.events = POLLIN; - if (1>select(This->joyfd+1,&readfds,NULL,NULL,&tv)) + if (poll(&plfd,1,0) != 1) return; /* we have one event, so we can read */ -- GitLab