summaryrefslogtreecommitdiffstats
path: root/hidd/fakehid.c
diff options
context:
space:
mode:
Diffstat (limited to 'hidd/fakehid.c')
-rw-r--r--hidd/fakehid.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/hidd/fakehid.c b/hidd/fakehid.c
index 91a62fb3..70eba3b4 100644
--- a/hidd/fakehid.c
+++ b/hidd/fakehid.c
@@ -25,6 +25,7 @@
#include <config.h>
#endif
+#define _GNU_SOURCE
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
@@ -44,6 +45,10 @@
#include <math.h>
+#ifdef NEED_PPOLL
+#include "ppoll.h"
+#endif
+
static void event(int fd, uint16_t type, uint16_t code, int32_t value)
{
struct uinput_event event;
@@ -282,6 +287,7 @@ int epox_presenter(const bdaddr_t *src, const bdaddr_t *dst, uint8_t channel)
unsigned char buf[16];
struct sigaction sa;
struct pollfd p;
+ sigset_t sigs;
char addr[18];
int i, fd, sk, len;
@@ -313,12 +319,14 @@ int epox_presenter(const bdaddr_t *src, const bdaddr_t *dst, uint8_t channel)
sa.sa_handler = sig_hup;
sigaction(SIGHUP, &sa, NULL);
+ sigfillset(&sigs);
+
p.fd = sk;
p.events = POLLIN | POLLERR | POLLHUP;
while (!__io_canceled) {
p.revents = 0;
- if (poll(&p, 1, 500) < 1)
+ if (ppoll(&p, 1, NULL, &sigs) < 1)
continue;
len = read(sk, buf, sizeof(buf));