[PATCH 2/2] d3drm: Store animation options

Henri Verbeet hverbeet at gmail.com
Tue Jun 27 09:43:04 CDT 2017


On 27 June 2017 at 16:33, Nikolay Sivov <bunglehead at gmail.com> wrote:
> On 27.06.2017 15:43, Henri Verbeet wrote:
>> On 27 June 2017 at 10:17, Nikolay Sivov <nsivov at codeweavers.com> wrote:
>>> +static HRESULT WINAPI d3drm_animation2_SetOptions(IDirect3DRMAnimation2 *iface, D3DRMANIMATIONOPTIONS options)
>>> +{
>>> +    struct d3drm_animation *animation = impl_from_IDirect3DRMAnimation2(iface);
>>> +    static const DWORD supported_options = D3DRMANIMATION_OPEN | D3DRMANIMATION_CLOSED | D3DRMANIMATION_LINEARPOSITION
>>> +        | D3DRMANIMATION_SPLINEPOSITION | D3DRMANIMATION_SCALEANDROTATION | D3DRMANIMATION_POSITION;
>>> +
>>> +    TRACE("iface %p, options %#x.\n", iface, options);
>>> +
>>> +    if (options && !(options & supported_options))
>>> +        return D3DRMERR_BADVALUE;
>> Should that be "if (options & ~supported_options)"? The test is
>> ambiguous about that.
>
> No, they both are wrong. It should be just "if (!(options &
> supported_options)", because 0 is not allowed.
>
What about unrecognised options? E.g., would 0x80000001 be allowed or not?

> Bottom line is spline and linear mode bits are bad design,
>
Yeah, but that goes for much of ddraw/d3d up to about version 9 or 10.



More information about the wine-devel mailing list