vlc | branch: master | Pierre d'Herbemont <[email protected]> | Sun Aug 1 12:48:49 2010 +0200| [532b014ad9c53a3ef32a74373fdb895726bde516] | committer: Pierre d'Herbemont
mtime: Avoid overflow when using mach_absolute_time(). Switch to double, do the operations and then convert back. This fixes the iPad video freezes. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=532b014ad9c53a3ef32a74373fdb895726bde516 --- src/misc/mtime.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/misc/mtime.c b/src/misc/mtime.c index 7341a66..80ed116 100644 --- a/src/misc/mtime.c +++ b/src/misc/mtime.c @@ -214,13 +214,13 @@ mtime_t mdate( void ) #elif defined( USE_APPLE_MACH ) pthread_once(&mtime_timebase_info_once, mtime_init_timebase); uint64_t date = mach_absolute_time(); + mach_timebase_info_data_t tb = mtime_timebase_info; - /* Convert to nanoseconds */ - date *= mtime_timebase_info.numer; - date /= mtime_timebase_info.denom; - + /* Get the ssystem dependent factor. Switch to double to prevent overflow */ + double factor = (double) tb.numer / (double) tb.denom; /* Convert to microseconds */ - res = date / 1000; + double d = (double) date * factor / 1000; + res = d; #elif defined( WIN32 ) || defined( UNDER_CE ) /* We don't need the real date, just the value of a high precision timer */ _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
