From: Matthias R. <mri...@in...> - 2008-09-28 16:05:12
|
# HG changeset patch # User mringwal@vs22 # Date 1222617309 -7200 # Node ID bcb0ef34cb7ebffe554bb474fd1022f334a87834 # Parent f5ff69fc65d3229ac9908b13c5bb0b9317adf80c Fix xine_usec_sleep for mingw+msys Bug was found and fixed by Carlo Bramix. select() does not work on mingw+msys causing xine_usec_sleep to sleep much longer than requested which completely broke audio playback diff -r f5ff69fc65d3 -r bcb0ef34cb7e src/xine-utils/utils.c --- a/src/xine-utils/utils.c Sat Sep 13 12:48:10 2008 +0100 +++ b/src/xine-utils/utils.c Sun Sep 28 17:55:09 2008 +0200 @@ -456,23 +456,22 @@ * a thread-safe usecond sleep */ void xine_usec_sleep(unsigned usec) { -#if 0 -#if HAVE_NANOSLEEP +#ifdef WIN32 + /* select does not work on win32 */ + Sleep(usec / 1000); +#else +# if 0 +# if HAVE_NANOSLEEP /* nanosleep is prefered on solaris, because it's mt-safe */ struct timespec ts, remaining; - ts.tv_sec = usec / 1000000; ts.tv_nsec = (usec % 1000000) * 1000; while (nanosleep (&ts, &remaining) == -1 && errno == EINTR) ts = remaining; -#else -# if WIN32 - Sleep(usec / 1000); +# else + usleep(usec); +# endif # else - usleep(usec); -# endif -#endif -#else if (usec < 10000) { usec = 10000; } @@ -480,6 +479,7 @@ tm.tv_sec = usec / 1000000; tm.tv_usec = usec % 1000000; select(0, 0, 0, 0, &tm); +# endif #endif } |