[MPlayer-cvslog] r18814 - trunk/input/input.c
reimar
subversion at mplayerhq.hu
Sun Jun 25 16:03:56 CEST 2006
Author: reimar
Date: Sun Jun 25 16:03:56 2006
New Revision: 18814
Modified:
trunk/input/input.c
Log:
Make sure mp_input_read_key_code always sleeps. Avoids 100% CPU load
during cache fill.
Modified: trunk/input/input.c
==============================================================================
--- trunk/input/input.c (original)
+++ trunk/input/input.c Sun Jun 25 16:03:56 2006
@@ -914,11 +914,14 @@
fd_set fds;
struct timeval tv,*time_val;
#endif
- int i,n=0,max_fd = 0;
+ int i,n=0,max_fd = 0, did_sleep = 0;
static int last_loop = 0;
if(num_key_fd == 0)
+ {
+ usec_sleep(time * 1000);
return MP_INPUT_NOTHING;
+ }
#ifndef HAVE_NO_POSIX_SELECT
FD_ZERO(&fds);
@@ -940,9 +943,6 @@
n++;
}
- if(num_key_fd == 0)
- return MP_INPUT_NOTHING;
-
#ifndef HAVE_NO_POSIX_SELECT
// if we have fd's without MP_FD_NO_SELECT flag, call select():
if(n>0){
@@ -962,6 +962,7 @@
}
break;
}
+ did_sleep = 1;
}
#endif
@@ -984,6 +985,7 @@
code = getch2(time);
if(code < 0)
code = MP_INPUT_NOTHING;
+ did_sleep = 1;
}
else
code = ((mp_key_func_t)key_fds[i].read_func)(key_fds[i].fd);
@@ -998,6 +1000,8 @@
key_fds[i].flags |= MP_FD_DEAD;
}
}
+ if (!did_sleep)
+ usec_sleep(time * 1000);
return MP_INPUT_NOTHING;
}
More information about the MPlayer-cvslog
mailing list