[vlc-devel] [PATCH] core: fix vlc_tick_now on darwin platform

Zhao Zhili quinkblack at foxmail.com
Thu Sep 27 06:00:23 CEST 2018


I didn't build on MacOS for a few days, so I didn't know from when does 
the MacOS version was broken. Debugging on this issue really takes some 
time including slow rebuild on old MacBook. So please do some basic test 
before push. I can help on the test if you don't have the environment.

On 2018年09月27日 11:42, Zhao Zhili wrote:
> ---
>   src/darwin/thread.c | 10 +++-------
>   1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/src/darwin/thread.c b/src/darwin/thread.c
> index f5eb4f2..0dd1e3c 100644
> --- a/src/darwin/thread.c
> +++ b/src/darwin/thread.c
> @@ -516,14 +516,10 @@ vlc_tick_t vlc_tick_now (void)
>       vlc_clock_setup();
>       uint64_t date = mach_absolute_time();
>   
> -    /* denom is uint32_t, switch to 64 bits to prevent overflow. */
> -    uint64_t denom = vlc_clock_conversion_factor.denom;
> -
> -    /* Switch to microsecs */
> -    denom *= UINT64_C(1000);
> -
>       /* Split the division to prevent overflow */
> -    return vlc_tick_from_frac( date * vlc_clock_conversion_factor.numer, denom );
> +    lldiv_t d = lldiv (vlc_clock_conversion_factor.numer, vlc_clock_conversion_factor.denom);
> +    date = (d.quot * date) + ((d.rem * date) / vlc_clock_conversion_factor.denom);
> +    return VLC_TICK_FROM_NS(date);
>   }
>   
>   #undef vlc_tick_wait





More information about the vlc-devel mailing list