From ddbe2931e4f2802fcd20e6a71a707052a843d5ab Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Jun 2002 21:36:25 +0000 Subject: [PATCH] Fixed building with pthreads and the pth library --- configure.in | 14 ++++++++------ src/timer/linux/SDL_systimer.c | 10 ++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/configure.in b/configure.in index a085bd686..68f4964ff 100644 --- a/configure.in +++ b/configure.in @@ -1138,8 +1138,6 @@ CheckPTHREAD() AC_ARG_ENABLE(pthread-sem, [ --enable-pthread-sem use pthread semaphores [default=yes]], , enable_pthread_sem=yes) - ac_save_cflags="$CFLAGS" - ac_save_libs="$LIBS" case "$target" in *-*-bsdi*) pthread_cflags="-D_REENTRANT -D_THREAD_SAFE" @@ -1187,9 +1185,12 @@ CheckPTHREAD() pthread_lib="-lpthread" ;; esac - CFLAGS="$CFLAGS $pthread_cflags" - LIBS="$LIBS $pthread_lib" if test x$enable_threads = xyes -a x$enable_pthreads = xyes; then + # Save the original compiler flags and libraries + ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS" + # Add the pthread compiler flags and libraries + CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib" + # Check to see if we have pthread support on this system AC_MSG_CHECKING(for pthreads) use_pthreads=no AC_TRY_LINK([ @@ -1201,6 +1202,9 @@ CheckPTHREAD() use_pthreads=yes ]) AC_MSG_RESULT($use_pthreads) + # Restore the compiler flags and libraries + CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs" + # Do futher testing if we have pthread support... if test x$use_pthreads = xyes; then CFLAGS="$CFLAGS $pthread_cflags -DSDL_USE_PTHREADS" SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags" @@ -1269,8 +1273,6 @@ CheckPTHREAD() esac fi fi - CFLAGS="$ac_save_cflags" - LIBS="$ac_save_libs" AC_MSG_CHECKING(whether semun is defined in /usr/include/sys/sem.h) have_semun=no diff --git a/src/timer/linux/SDL_systimer.c b/src/timer/linux/SDL_systimer.c index 131eeae0e..3bf019126 100644 --- a/src/timer/linux/SDL_systimer.c +++ b/src/timer/linux/SDL_systimer.c @@ -41,6 +41,9 @@ static char rcsid = #if _POSIX_THREAD_SYSCALL_SOFT #include #endif +#ifdef ENABLE_PTH +#include +#endif #if defined(DISABLE_THREADS) || defined(FORK_HACK) #define USE_ITIMER @@ -142,6 +145,12 @@ Uint32 SDL_GetTicks (void) void SDL_Delay (Uint32 ms) { +#ifdef ENABLE_PTH + pth_time_t tv; + tv.tv_sec = ms/1000; + tv.tv_usec = (ms%1000)*1000; + pth_nap(tv); +#else int was_error; #ifdef USE_NANOSLEEP @@ -189,6 +198,7 @@ void SDL_Delay (Uint32 ms) was_error = select(0, NULL, NULL, NULL, &tv); #endif /* USE_NANOSLEEP */ } while ( was_error && (errno == EINTR) ); +#endif /* ENABLE_PTH */ } #ifdef USE_ITIMER