[RFC 2/11] Linux FF: Linux effect status management

Elias Vanderstuyft elias.vds at gmail.com
Fri Mar 7 15:23:18 CST 2014


On Wed, Mar 5, 2014 at 3:54 PM, Andrew Eikum <aeikum at codeweavers.com> wrote:
> On Tue, Mar 04, 2014 at 08:19:39PM +0100, Elias Vanderstuyft wrote:
>>     => This has been discussed (see
>> http://www.mail-archive.com/[email protected]/msg08513.html),
>> and the following is true:
>>         My opinion appeared to be correct, but for to be sure, I was
>> recommended to apply the change in Wine as well.
>>
>
> Yes, we should also fix this in Wine to support "buggy" old kernels.
> It would be worth adding a short comment to the code explaining which
> kernel versions are affected by this bug.

At the moment, I did not receive any reaction yet on my kernel patch
(although it was suggested by one of the kernel devs):
http://www.spinics.net/lists/linux-input/msg29920.html
So I don't know yet in what kernel the bug will be resolved.
If I my Wine patches make it first to release, what should I write
then? "pending as of <current date>"?

>
>> b)  Be more precise in returning errors.
>>
>
> Seems fine. If you can add tests (EINVAL seems easy to test, at
> least), that would be even better.

But that may be FF driver dependent, for example:
    - the (soon deprecated) ff-memless driver does not return an error
when setting periodic effects' period to zero
    - the newer ff-memless-next driver does return an error when
setting periodic effects' period to zero, and when setting other
invalid parameters
And I don't know whether Wine tests may rely on drivers? (normally,
then you would also need to own a FF capable joystick)
Unless you use a dummy-device, of course, but again, I don't think we
want to include that in the Wine test tree, right?

However on the other hand, I do understand that this should be tested.
What do you suggest?

>
>> c)  The following in dinput/effect_linuxinput.c:336 :
>>         if (res != DI_OK)
>>     should be probably :
>>         if (FAILED(res))
>>     for example if a device reports S_FALSE because it has already
>> updated an identical effect.
>>
>>     The same for line 549:
>>         if (retval != DI_OK)
>>     should be then :
>>         if (FAILED(retval))
>>
>
> Sure, seems fine. As an additional fix, you could demonstrate with
> tests that Download and Start can return S_FALSE under those
> circumstances on Windows, and fix the Wine behavior to match.

I'm new to Wine's test-framework, suppose I managed to create such
test and successfully run it on Wine, how can I compile that test for
Windows? (I don't have MS VS, and I prefer to not use it)
(Maybe I should also mention that I don't have enough time for the
moment to create tests.)


BTW, thanks for all feedback so far ;)

Elias



More information about the wine-devel mailing list