[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