libbluray | branch: master | hpi1 <[email protected]> | Wed Feb 18 21:35:27 2015 +0200| [51820f9075037363616f614a1122bb5310549e4f] | committer: hpi1
Move code from time.h to time.c Avoid pulling system-dependent headers to other files. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=51820f9075037363616f614a1122bb5310549e4f --- Makefile.am | 3 ++- src/util/time.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/util/time.h | 54 +++------------------------------------ 3 files changed, 80 insertions(+), 52 deletions(-) diff --git a/Makefile.am b/Makefile.am index b01688d..e03e926 100644 --- a/Makefile.am +++ b/Makefile.am @@ -121,7 +121,8 @@ libbluray_la_SOURCES = \ src/util/refcnt.c \ src/util/strutl.h \ src/util/strutl.c \ - src/util/time.h + src/util/time.h \ + src/util/time.c if HAVE_DARWIN libbluray_la_SOURCES+= \ diff --git a/src/util/time.c b/src/util/time.c new file mode 100644 index 0000000..e0480c5 --- /dev/null +++ b/src/util/time.c @@ -0,0 +1,75 @@ +/* + * This file is part of libbluray + * Copyright (C) 2010 VideoLAN + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include "time.h" + +#include <stdint.h> + +#if defined(_WIN32) +# include <windows.h> +#elif defined(HAVE_SYS_TIME_H) +# include <sys/time.h> +#else +# error no time support found +#endif + +#if defined(_WIN32) + +static uint64_t _bd_get_scr_impl(void) +{ + HANDLE thread; + DWORD_PTR mask; + LARGE_INTEGER frequency, counter; + + thread = GetCurrentThread(); + mask = SetThreadAffinityMask(thread, 1); + QueryPerformanceFrequency(&frequency); + QueryPerformanceCounter(&counter); + SetThreadAffinityMask(thread, mask); + + return (uint64_t)(counter.QuadPart * 1000.0 / frequency.QuadPart) * 90; +} + +#elif defined(HAVE_SYS_TIME_H) + +static uint64_t _bd_get_scr_impl(void) +{ + struct timeval tv; + gettimeofday(&tv, 0); + return ((uint64_t)tv.tv_sec * 1000 + tv.tv_usec / 1000) * 90; +} + +#endif + +uint64_t bd_get_scr(void) +{ + static uint64_t t0 = (uint64_t)-1; + + uint64_t now = _bd_get_scr_impl(); + + if (t0 > now) { + t0 = now; + } + + return now - t0; +} diff --git a/src/util/time.h b/src/util/time.h index b512c99..62a1fcb 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -20,58 +20,10 @@ #ifndef LIBBLURAY_TIME_H_ #define LIBBLURAY_TIME_H_ -#if HAVE_CONFIG_H -#include "config.h" -#endif +#include "attributes.h" -#if defined(_WIN32) -# include <windows.h> -#elif defined(HAVE_SYS_TIME_H) -# include <sys/time.h> -#else -# error no time support found -#endif - - -#if defined(_WIN32) -static uint64_t _bd_get_scr_impl(void) -{ - HANDLE thread; - DWORD_PTR mask; - LARGE_INTEGER frequency, counter; - - thread = GetCurrentThread(); - mask = SetThreadAffinityMask(thread, 1); - QueryPerformanceFrequency(&frequency); - QueryPerformanceCounter(&counter); - SetThreadAffinityMask(thread, mask); - - return (uint64_t)(counter.QuadPart * 1000.0 / frequency.QuadPart) * 90; -} - -#elif defined(HAVE_SYS_TIME_H) - -static uint64_t _bd_get_scr_impl(void) -{ - struct timeval tv; - gettimeofday(&tv, 0); - return ((uint64_t)tv.tv_sec * 1000 + tv.tv_usec / 1000) * 90; -} - -#endif - -static uint64_t bd_get_scr(void) -{ - static uint64_t t0 = (uint64_t)-1; - - uint64_t now = _bd_get_scr_impl(); - - if (t0 > now) { - t0 = now; - } - - return now - t0; -} +#include <stdint.h> +BD_PRIVATE uint64_t bd_get_scr(void); #endif // LIBBLURAY_TIME_H_ _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
