From: Matthias R. <mri...@in...> - 2008-11-07 18:39:42
|
# HG changeset patch # User Matthias Ringwald <mri...@in...> # Date 1222617309 -7200 # Node ID ba031e8da4c2425224d3e138ccbfb82c6d20d674 # Parent d987bee611101c63c38d6c869205411a3cd71f66 Fix xine_usec_sleep for mingw+msys Bug was found and fixed by Carlo Bramini. select() does not work on mingw+msys causing xine_usec_sleep to sleep much longer than requested which completely broke audio playback diff -r ba031e8da4c2425224d3e138ccbfb82c6d20d674 -r d987bee611101c63c38d6c869205411a3cd71f66 ChangeLog --- a/ChangeLog Sun Sep 28 17:55:09 2008 +0200 +++ b/ChangeLog Sat Sep 20 13:25:35 2008 +0200 @@ -3,6 +3,7 @@ xine-lib (1.1.16) 2008-??-?? * Fix CDDB access in 64-bit builds. * Fix seeking FLV clips that don't specify the movie length in the headers. * Support H.264 and AAC streams within FLV. + * Fix timing issues (broken audio) on mingw. xine-lib (1.1.15) 2008-08-14 * Security fixes: diff -r ba031e8da4c2425224d3e138ccbfb82c6d20d674 -r d987bee611101c63c38d6c869205411a3cd71f66 src/xine-utils/utils.c --- a/src/xine-utils/utils.c Sun Sep 28 17:55:09 2008 +0200 +++ b/src/xine-utils/utils.c Sat Sep 20 13:25:35 2008 +0200 @@ -456,23 +456,22 @@ char *xine_chomp(char *str) { * 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 @@ void xine_usec_sleep(unsigned usec) { tm.tv_sec = usec / 1000000; tm.tv_usec = usec % 1000000; select(0, 0, 0, 0, &tm); +# endif #endif } |