notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
32x: preliminary PWM implementation. 32x opts in menu
[picodrive.git]
/
platform
/
linux
/
in_evdev.c
diff --git
a/platform/linux/in_evdev.c
b/platform/linux/in_evdev.c
index
6eea20a
..
7866015
100644
(file)
--- a/
platform/linux/in_evdev.c
+++ b/
platform/linux/in_evdev.c
@@
-256,7
+256,7
@@
int in_evdev_update(void *drv_data, const int *binds, int *result)
int rd, ret, u;
if (dev->kbits == NULL) {
int rd, ret, u;
if (dev->kbits == NULL) {
- ret = ioctl(dev->fd, EVIOCGKEY(sizeof(keybits
)), keybits
);
+ ret = ioctl(dev->fd, EVIOCGKEY(sizeof(keybits
_)), keybits_
);
if (ret == -1) {
perror("in_evdev: ioctl failed");
return -1;
if (ret == -1) {
perror("in_evdev: ioctl failed");
return -1;
@@
-317,6
+317,16
@@
static void in_evdev_set_blocking(void *drv_data, int y)
perror("in_evdev: F_GETFL fcntl failed");
return;
}
perror("in_evdev: F_GETFL fcntl failed");
return;
}
+
+ if (flags & O_NONBLOCK) {
+ /* flush the event queue */
+ struct input_event ev;
+ do {
+ ret = read(dev->fd, &ev, sizeof(ev));
+ }
+ while (ret == sizeof(ev));
+ }
+
if (y)
flags &= ~O_NONBLOCK;
else
if (y)
flags &= ~O_NONBLOCK;
else