Christoph Frick wrote:
with Vitaliy's patches i tried my games yesterday and everything seemed ok (RBR works again). but my clutch on the wheel did not work and also That's a good news. I was hopping not to brake too many things while reorganizing the dinput.
@@ -128,11 +122,20 @@ struct JoystickImpl /* The 'parent' DInput */ IDirectInputImpl *dinput;
+ /* autodetecting ranges per axe by following movement */ + LONG havemax[8]; + LONG havemin[8]; I could never understood why we need these? In other joystick_linux the range assumed to be 0 - 0xffff.
/* joystick private */ /* what range and deadzone the game wants */ - LONG wantmin[ABS_MAX]; - LONG wantmax[ABS_MAX]; - LONG deadz[ABS_MAX]; + LONG wantmin[8]; + LONG wantmax[8]; + LONG deadz[8]; Can we move these into separate struct like it's done in joystick_linux? It's much cleaner end eventually will allow a better integration of two.
And can you use spaces instead of tabs please?
@@ -395,19 +373,29 @@ static JoystickImpl *alloc_device(REFGUID rguid, const void *jvt, IDirectInputIm /* Supported Axis & POVs should map 1-to-1 */ for (i = 0; i < 8; i++) { - if (!test_bit(newDevice->joydev->absbits, i)) continue; + if (!test_bit(newDevice->joydev->absbits, i)) { + newDevice->axes[i] = -1; + continue; + } Can you please don't brake the good readable style? Please put that curly bracket into separate line, and use 4 space indentation.
+ fake_current_js_state(newDevice); + Can you explain what this suppose to do? Why do we need to "fake current state" everywhere?
+ int axe = This->axes[ie.code]; It's an "axis" not an "axe" :)
Vitaliy.