summaryrefslogtreecommitdiffstats
path: root/input
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-29 21:52:08 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-29 21:52:08 +0000
commit68ea3c85ba4e461774c15594c14652cdb2f0e3f4 (patch)
tree58db447d62c617dcb3e88a1b5ffbf2c72b68a845 /input
parentc382b3cd47f05186425b9993af2b1db1905da8f5 (diff)
downloadmpv-68ea3c85ba4e461774c15594c14652cdb2f0e3f4.tar.bz2
mpv-68ea3c85ba4e461774c15594c14652cdb2f0e3f4.tar.xz
- 10l fix: it exited with return MP_INPUT_NOTHING; if all fd's have
MP_FD_NO_SELECT set! - moved time_val stuff into if(n>0), also changed misleading while(n>0) to while(1) (as the loop never touch n) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9735 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'input')
-rw-r--r--input/input.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/input/input.c b/input/input.c
index d3b01b2703..916bae441d 100644
--- a/input/input.c
+++ b/input/input.c
@@ -782,6 +782,7 @@ mp_input_read_key_code(int time) {
FD_ZERO(&fds);
// Remove fd marked as dead and build the fd_set
+ // n == number of fd's to be select() checked
for(i = 0; (unsigned int)i < num_key_fd; i++) {
if( (key_fds[i].flags & MP_FD_DEAD) ) {
mp_input_rm_key_fd(key_fds[i].fd);
@@ -795,9 +796,12 @@ mp_input_read_key_code(int time) {
n++;
}
- if(n == 0 || num_key_fd == 0)
+ if(num_key_fd == 0)
return MP_INPUT_NOTHING;
+// if we have fd's without MP_FD_NO_SELECT flag, call select():
+if(n>0){
+
if(time >= 0 ) {
tv.tv_sec=time/1000;
tv.tv_usec = (time%1000)*1000;
@@ -805,7 +809,7 @@ mp_input_read_key_code(int time) {
} else
time_val = NULL;
- while(n > 0) {
+ while(1) {
if(select(max_fd+1,&fds,NULL,NULL,time_val) < 0) {
if(errno == EINTR)
continue;
@@ -813,7 +817,9 @@ mp_input_read_key_code(int time) {
}
break;
}
-
+
+}
+
for(i = last_loop + 1 ; i != last_loop ; i++) {
int code = -1;
// This is to check all fd in turn