dinput: Fix IDirectInputEffect::SetParameters() behavior with NULL effect parameters.
Signed-off-by: Brendan Shanks <bshanks@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f00b59f597
commit
f66517b5a2
|
@ -499,6 +499,9 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
|
|||
dump_DIEFFECT(peff, &This->guid, dwFlags);
|
||||
|
||||
if (dwFlags & DIEP_AXES) {
|
||||
if (!(peff->rgdwAxes))
|
||||
return DIERR_INVALIDPARAM;
|
||||
|
||||
/* the linux input effect system only supports one or two axes */
|
||||
if (peff->cAxes > 2)
|
||||
return DIERR_INVALIDPARAM;
|
||||
|
@ -511,6 +514,9 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
|
|||
* different opinions about which way direction "0" is. directx has 0 along the x
|
||||
* axis (left), linux has it along the y axis (down). */
|
||||
if (dwFlags & DIEP_DIRECTION) {
|
||||
if (!(peff->rglDirection))
|
||||
return DIERR_INVALIDPARAM;
|
||||
|
||||
if (peff->cAxes == 1) {
|
||||
if (peff->dwFlags & DIEFF_CARTESIAN) {
|
||||
if (dwFlags & DIEP_AXES) {
|
||||
|
@ -629,7 +635,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
|
|||
if (dwFlags & DIEP_TYPESPECIFICPARAMS)
|
||||
{
|
||||
if (!(peff->lpvTypeSpecificParams))
|
||||
return DIERR_INCOMPLETEEFFECT;
|
||||
return DIERR_INVALIDPARAM;
|
||||
|
||||
if (type == DIEFT_PERIODIC)
|
||||
{
|
||||
|
|
|
@ -606,7 +606,6 @@ static BOOL CALLBACK EnumJoysticks(const DIDEVICEINSTANCEA *lpddi, void *pvRef)
|
|||
ok(hr==DI_OK,"IDirectInputEffect_Initialize failed: %08x\n", hr);
|
||||
|
||||
/* Test SetParameters with NULL pointers */
|
||||
todo_wine {
|
||||
tmp = effect_data.eff.rgdwAxes;
|
||||
effect_data.eff.rgdwAxes = NULL;
|
||||
hr = IDirectInputEffect_SetParameters(effect, &effect_data.eff, DIEP_AXES);
|
||||
|
@ -624,7 +623,6 @@ static BOOL CALLBACK EnumJoysticks(const DIDEVICEINSTANCEA *lpddi, void *pvRef)
|
|||
hr = IDirectInputEffect_SetParameters(effect, &effect_data.eff, DIEP_TYPESPECIFICPARAMS);
|
||||
ok(hr==DIERR_INVALIDPARAM,"IDirectInputEffect_SetParameters should fail with INVALIDPARAM, got: %08x\n", hr);
|
||||
effect_data.eff.lpvTypeSpecificParams = tmp;
|
||||
}
|
||||
|
||||
hr = IDirectInputEffect_SetParameters(effect, &effect_data.eff, DIEP_AXES | DIEP_DIRECTION |
|
||||
DIEP_TYPESPECIFICPARAMS);
|
||||
|
|
Loading…
Reference in New Issue