mirror of
https://github.com/mpv-player/mpv
synced 2024-12-21 06:14:32 +00:00
Make sure mp_input_read_key_code always sleeps. Avoids 100% CPU load
during cache fill. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18814 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
ee00cceb8b
commit
9e365fd95b
@ -914,11 +914,14 @@ mp_input_read_key_code(int time) {
|
||||
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 @@ mp_input_read_key_code(int time) {
|
||||
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 @@ if(n>0){
|
||||
}
|
||||
break;
|
||||
}
|
||||
did_sleep = 1;
|
||||
|
||||
}
|
||||
#endif
|
||||
@ -984,6 +985,7 @@ if(n>0){
|
||||
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 @@ if(n>0){
|
||||
key_fds[i].flags |= MP_FD_DEAD;
|
||||
}
|
||||
}
|
||||
if (!did_sleep)
|
||||
usec_sleep(time * 1000);
|
||||
return MP_INPUT_NOTHING;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user