git://git.jankratochvil.net
/
gnokii.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Untested attempt to get rid of SIGIO pain
[gnokii.git]
/
common
/
data
/
virtmodem.c
diff --git
a/common/data/virtmodem.c
b/common/data/virtmodem.c
index
f6f1f3e
..
169b117
100644
(file)
--- a/
common/data/virtmodem.c
+++ b/
common/data/virtmodem.c
@@
-136,10
+136,12
@@
bool VM_ThreadLoop(void)
FD_ZERO(&readfds);
FD_SET(PtyRDFD,&readfds);
FD_ZERO(&readfds);
FD_SET(PtyRDFD,&readfds);
+ FD_SET(device_portfd,&readfds);
timeout.tv_sec=2;
timeout.tv_usec=0;/*500*1000;*/
timeout.tv_sec=2;
timeout.tv_usec=0;/*500*1000;*/
- res = select(PtyRDFD+1,&readfds,NULL/*writefds*/,NULL/*exceptfds*/,&timeout);
+ res = select((device_portfd > PtyRDFD ? device_portfd : PtyRDFD)+1,
+ &readfds,NULL/*writefds*/,NULL/*exceptfds*/,&timeout);
switch (res) {
case 0: /* Timeout */
switch (res) {
case 0: /* Timeout */
@@
-155,9
+157,12
@@
bool VM_ThreadLoop(void)
return (false);
default:
return (false);
default:
- if (FD_ISSET(PtyRDFD,&readfds))
{
+ if (FD_ISSET(PtyRDFD,&readfds))
VM_CharHandler();
VM_CharHandler();
- } else usleep(500); /* Probably the file has been closed */
+ if (FD_ISSET(device_portfd,&readfds))
+ SigHandler(0);
+ if (!FD_ISSET(PtyRDFD,&readfds) && !FD_ISSET(device_portfd,&readfds))
+ usleep(500); /* Probably the file has been closed */
break;
}
}
break;
}
}