dinput - Allow the use of the standard Joystick GUID when calling CreateDevice

Peter Dons Tychsen donpedro at tdcadsl.dk
Thu Aug 2 18:02:49 CDT 2007


On Thu, 2007-08-02 at 06:54 -0600, Vitaliy Margolen wrote:
> Peter Dons Tychsen wrote:
> > On Tue, 2007-07-31 at 20:05 -0600, Vitaliy Margolen wrote:
> >> Peter Dons Tychsen wrote:
> >>> On Tue, 2007-07-31 at 06:34 -0600, Vitaliy Margolen wrote:
> >>>> Peter Dons Tychsen wrote:
> >>>>> On Mon, 2007-07-30 at 21:20 +0200, Peter Dons Tychsen wrote:
> >>>>>> On Sun, 2007-07-29 at 17:43 -0600, Vitaliy Margolen wrote:
> >>>>>>> Peter Dons Tychsen wrote:
> >>>>>>>> OK. Please review this diff:
> >>>>>>>>
> >>>>>>>> I will re-submit it if you like it.
> >>>>>>>>
> >>>>>>>> /Pedro
> >>>>>>> Alright looks good now (you might want to remove the extra white space your 
> >>>>>>> patch adds - git complains about those). Just left to make the same change 
> >>>>>>> to the other joystick interface :)
> >>>>>>>
> >>>>>>> BTW don't forget to cc: the wine-devel list when you replying.
> >>>>>>>
> >>>>>>> Vitaliy.
> >>>>>> OK. I still feel that trying to sync joystick_linuxinput.c and
> >>>>>> joystick_linux.c is out of scope for this patch. But as my steadiness
> >>>>>> has limits i have done some of it anyway... :). I have kept the changes
> >>>>>> modest.
> >>>>>>
> >>>>>> Please take a look at the new patch.
> >>>>>>
> >>>>>> On another note i will agree with you that it would be practical if the
> >>>>>> two files had similar (or maybe even shared) code. Redundant code is
> >>>>>> never very practical as it always ends up as this very example. The two
> >>>>>> implementations which were supposed to identical always drift apart. If
> >>>>>> things are supposed to do the same, keep them together to begin with.
> >>>>>>
> >>>>>> Thanks,
> >>>>>>
> >>>>> Maybe i would be more successful if i actually attached the
> >>>>> patch.... :-)
> >>>>>
> >>>>> Here it is....
> >>>> Just few small things left:
> >>>>
> >>>>> -#undef MAX_JOYSTICKS
> >>>> As I mentioned earlier you should move this instead of removing it completely.
> >>>>
> >>>>
> >>>>>  static HRESULT joydev_create_deviceW(IDirectInputImpl *dinput, REFGUID rguid, REFIID riid, LPDIRECTINPUTDEVICEW* pdev)
> >>>>>  {
> >>>>> -  int i;
> >>>>> -
> >>>>> -  find_joydevs();
> >>>> You removed a really important function call here.
> >>>>
> >>>>
> >>>>> +static HRESULT joydev_create_deviceA(IDirectInputImpl *dinput, REFGUID rguid, REFIID riid, LPDIRECTINPUTDEVICEA* pdev)
> >>>>> +{
> >>>>> +  unsigned short index;
> >>>>> +
> >>>>> +  if ((index = get_joystick_index(rguid)) < MAX_JOYDEV) {
> >>>>> +    if ((riid == NULL) ||
> >>>> If you reformat the whole function, please make it 4-space indented.
> >>>>
> >>> OK. Here is the new patch:
> >>>
> >> Looks good to me. The problem is, it doesn't work for me (USB joystick). I 
> >> think you forgot to look at how joystick_linuxinput.c handles that data3 
> >> field. It's not just 0 based index...
> >>
> > I told you i should bot have merged the changes over to
> > joystick_linuxinput as they were too different... :-)
> > 
> > OK, so how do i force my system to use the other implementation (so i
> > can test it) ?
> > 
> > I have a Logitech WingMan Extreme (old version).
> > 
> Just (re)move /dev/input/js*. Or in dinput change device name to point to 
> non-existent directory/device (in joystick_linux.c).
> 
> Vitaliy.

OK, fair enough. Even though i did'nt like messing around with
joystick_linuxinput.c i should have been smarter than trying to submit
something i could not test... :-(

But... tada!... now i have re-fixed it and re-tested both
implementations. Its seems stable now. :-)

Please give it another go on your machine Vitaliy.

Cheers,

/Pedro




More information about the wine-devel mailing list