Index: win32/thread-win32.c =================================================================== RCS file: /cvsroot/rockbox/uisimulator/win32/thread-win32.c,v retrieving revision 1.7 diff -u -r1.7 thread-win32.c --- win32/thread-win32.c 4 Dec 2005 12:18:01 -0000 1.7 +++ win32/thread-win32.c 7 Dec 2005 23:14:12 -0000 @@ -33,15 +33,21 @@ void yield(void) { + /* do a real sleep from time to time */ + static unsigned char AntiCpuHog = 0; + AntiCpuHog++; LeaveCriticalSection(&CriticalSection); - Sleep(1); + Sleep(AntiCpuHog ? 0 : 1); EnterCriticalSection(&CriticalSection); } void sim_sleep(int ticks) { + /* always sleep a significant amount */ LeaveCriticalSection(&CriticalSection); - Sleep((1000/HZ) * ticks); + int sleeptime = (1000/HZ) * ticks; + if(sleeptime < 1) sleeptime = 1; + Sleep(sleeptime); EnterCriticalSection(&CriticalSection); }