[PATCH] winex11.drv: Fix incorrect frequency for doublescan and interlaced modes.

Dmitry Timoshkov dmitry at baikal.ru
Tue Feb 4 02:27:24 CST 2020


Zhiyi Zhang <zzhang at codeweavers.com> wrote:

> +static DWORD get_frequency( const XRRModeInfo *mode )
> +{
> +    if (mode->hTotal && mode->vTotal)
> +    {
> +        double v_total = mode->vTotal;
> +
> +        if (mode->modeFlags & RR_DoubleScan)
> +            v_total *= 2;
> +        if (mode->modeFlags & RR_Interlace)
> +            v_total /= 2;
> +
> +        /* Adding 0.05 instead of 0.5 to round so that common frequencies like
> +         * 59.94Hz and 23.976Hz become 59Hz and 24Hz. Using 0.5 would make
> +         * 59.94Hz become 60Hz and would make it seem like there are two 60Hz modes */
> +        return mode->dotClock / (mode->hTotal * v_total) + 0.05;
> +    }
> +
> +    return 0;
> +}

It seems that floating point (and especially double) is not needed here
to do a proper calculation.

-- 
Dmitry.



More information about the wine-devel mailing list