diff options
author | Thomas White <taw@physics.org> | 2023-04-30 09:10:32 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2023-04-30 09:10:32 +0200 |
commit | 622813d02f9186e3255aa4745f3bdf133f63ca91 (patch) | |
tree | 3eeeabde53fbea884b5639c0af340e22fd0fb99e | |
parent | f3653bcd920edd33e0a991d57661532624176f01 (diff) |
Exit on error (avoid 100% CPU loop)
-rw-r--r-- | x1k2-midi-osc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/x1k2-midi-osc.c b/x1k2-midi-osc.c index 3a4f476..3ad763d 100644 --- a/x1k2-midi-osc.c +++ b/x1k2-midi-osc.c @@ -279,6 +279,16 @@ static int flip_position(int i) } +static int hup_err(struct pollfd *pfds, int nfds) +{ + int i; + for ( i=0; i<nfds; i++ ) { + if ( pfds[i].revents & (POLLERR | POLLHUP) ) return 1; + } + return 0; +} + + int main(int argc, char *argv[]) { int c, r, i; @@ -371,6 +381,11 @@ int main(int argc, char *argv[]) unsigned short revents; + if ( hup_err(pfds, 1+nfds) ) { + fprintf(stderr, "Error!\n"); + break; + } + if ( pfds[0].revents & POLLIN ) { lo_server_recv_noblock(osc_server, 0); } |