Module: wine Branch: master Commit: d2969fef920cd2d3660db8b912893ddd82c26527 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d2969fef920cd2d3660db8b912...
Author: Vincent Pelletier plr.vincent@gmail.com Date: Sun Jan 18 19:02:14 2009 +0100
dinput: Add effect gain support.
---
dlls/dinput/effect_linuxinput.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c index eb6a2b5..f225a65 100644 --- a/dlls/dinput/effect_linuxinput.c +++ b/dlls/dinput/effect_linuxinput.c @@ -54,6 +54,7 @@ struct LinuxInputEffectImpl GUID guid;
struct ff_effect effect; /* Effect data */ + int gain; /* Effect gain */ int* fd; /* Parent device */ struct list *entry; /* Entry into the parent's list of effects */ }; @@ -379,9 +380,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetParameters( }
if (dwFlags & DIEP_GAIN) { - /* the linux input ff driver apparently has no support - * for setting the device's gain. */ - peff->dwGain = DI_FFNOMINALMAX; + peff->dwGain = This->gain; }
if (dwFlags & DIEP_SAMPLEPERIOD) { @@ -513,6 +512,12 @@ static HRESULT WINAPI LinuxInputEffectImpl_Start( }
event.type = EV_FF; + + event.code = FF_GAIN; + event.value = This->gain; + if (write(*(This->fd), &event, sizeof(event)) == -1) + FIXME("Failed setting gain. Error: %d "%s".\n", errno, strerror(errno)); + event.code = This->effect.id; event.value = dwIterations; if (write(*(This->fd), &event, sizeof(event)) == -1) { @@ -623,7 +628,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters( /* Gain and Sample Period settings are not supported by the linux * event system */ if (dwFlags & DIEP_GAIN) - TRACE("Gain requested but no gain functionality present.\n"); + This->gain = 0xFFFF * peff->dwGain / 1000;
if (dwFlags & DIEP_SAMPLEPERIOD) TRACE("Sample period requested but no sample period functionality present.\n");