Commit 45512124 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

mac PPC: don't use mach absolute_time()

Introduced in [5ead92ff], on PowerPC-based Macs this breaks the playback of a certain AVI and WMV files for reasons not fully understood. The commit was reverted for PPC macs in
* [49f3721c]
* [7786caa5]
but these commits were never applied to the master branch.
(cherry picked from commit c6ce6df8)
Signed-off-by: default avatarDerk-Jan Hartman <hartman@videolan.org>
parent 3702eecb
...@@ -56,7 +56,8 @@ ...@@ -56,7 +56,8 @@
# include <sys/time.h> # include <sys/time.h>
#endif #endif
#ifdef __APPLE__ #ifdef __APPLE__ && && !defined(__powerpc__) && !defined(__ppc__) && !defined(__ppc64__)
#define USE_APPLE_MACH 1
# include <mach/mach.h> # include <mach/mach.h>
# include <mach/mach_time.h> # include <mach/mach_time.h>
#endif #endif
...@@ -173,7 +174,7 @@ static inline unsigned mprec( void ) ...@@ -173,7 +174,7 @@ static inline unsigned mprec( void )
#endif #endif
} }
#ifdef __APPLE__ #ifdef USE_APPLE_MACH
static mach_timebase_info_data_t mtime_timebase_info; static mach_timebase_info_data_t mtime_timebase_info;
static pthread_once_t mtime_timebase_info_once = PTHREAD_ONCE_INIT; static pthread_once_t mtime_timebase_info_once = PTHREAD_ONCE_INIT;
static void mtime_init_timebase(void) static void mtime_init_timebase(void)
...@@ -207,7 +208,7 @@ mtime_t mdate( void ) ...@@ -207,7 +208,7 @@ mtime_t mdate( void )
#elif defined( HAVE_KERNEL_OS_H ) #elif defined( HAVE_KERNEL_OS_H )
res = real_time_clock_usecs(); res = real_time_clock_usecs();
#elif defined( __APPLE__ ) #elif defined( USE_APPLE_MACH )
pthread_once(&mtime_timebase_info_once, mtime_init_timebase); pthread_once(&mtime_timebase_info_once, mtime_init_timebase);
uint64_t date = mach_absolute_time(); uint64_t date = mach_absolute_time();
...@@ -323,7 +324,7 @@ mtime_t mdate( void ) ...@@ -323,7 +324,7 @@ mtime_t mdate( void )
i_previous_time = res; i_previous_time = res;
LeaveCriticalSection( &date_lock ); LeaveCriticalSection( &date_lock );
} }
#elif defined( __APPLE__ ) /* The version that should be used, if it was cancelable */ #elif USE_APPLE_MACH /* The version that should be used, if it was cancelable */
pthread_once(&mtime_timebase_info_once, mtime_init_timebase); pthread_once(&mtime_timebase_info_once, mtime_init_timebase);
uint64_t mach_time = date * 1000 * mtime_timebase_info.denom / mtime_timebase_info.numer; uint64_t mach_time = date * 1000 * mtime_timebase_info.denom / mtime_timebase_info.numer;
mach_wait_until(mach_time); mach_wait_until(mach_time);
...@@ -424,7 +425,7 @@ void msleep( mtime_t delay ) ...@@ -424,7 +425,7 @@ void msleep( mtime_t delay )
while( nanosleep( &ts_delay, &ts_delay ) && ( errno == EINTR ) ); while( nanosleep( &ts_delay, &ts_delay ) && ( errno == EINTR ) );
#elif defined( __APPLE__ ) /* The version that should be used, if it was cancelable */ #elif USE_APPLE_MACH /* The version that should be used, if it was cancelable */
pthread_once(&mtime_timebase_info_once, mtime_init_timebase); pthread_once(&mtime_timebase_info_once, mtime_init_timebase);
uint64_t mach_time = delay * 1000 * mtime_timebase_info.denom / mtime_timebase_info.numer; uint64_t mach_time = delay * 1000 * mtime_timebase_info.denom / mtime_timebase_info.numer;
mach_wait_until(mach_time + mach_absolute_time()); mach_wait_until(mach_time + mach_absolute_time());
......
...@@ -618,7 +618,7 @@ int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex, ...@@ -618,7 +618,7 @@ int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
mtime_t deadline) mtime_t deadline)
{ {
#if defined(LIBVLC_USE_PTHREAD) #if defined(LIBVLC_USE_PTHREAD)
#ifdef __APPLE__ #if defined(__APPLE__) && !defined(__powerpc__) && !defined( __ppc__ ) && !defined( __ppc64__ )
/* mdate() is mac_absolute_time on osx, which we must convert to do /* mdate() is mac_absolute_time on osx, which we must convert to do
* the same base than gettimeofday() on which pthread_cond_timedwait * the same base than gettimeofday() on which pthread_cond_timedwait
* counts on. */ * counts on. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment