Module: wine Branch: master Commit: 71f41e5d0272a435840d00c08c6252cdf5008364 URL: http://source.winehq.org/git/wine.git/?a=commit;h=71f41e5d0272a435840d00c08c...
Author: Christoph Frick frick@sc-networks.de Date: Mon Dec 11 10:04:49 2006 +0100
dinput: Utilize IDirectInputDevice2AImpl_Acquire/Unacquire.
---
dlls/dinput/joystick_linuxinput.c | 39 +++++++++++++++++++----------------- 1 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index 868fe89..c5a35a1 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -605,26 +605,29 @@ static HRESULT WINAPI JoystickAImpl_SetD static HRESULT WINAPI JoystickAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface) { JoystickImpl *This = (JoystickImpl *)iface; + HRESULT res;
TRACE("(this=%p)\n",This); - if (This->joyfd!=-1) - return S_FALSE; + if (This->df==NULL) { return DIERR_INVALIDPARAM; } - - if (-1==(This->joyfd=open(This->joydev->device,O_RDWR))) { - if (-1==(This->joyfd=open(This->joydev->device,O_RDONLY))) { - /* Couldn't open the device at all */ - perror(This->joydev->device); - return DIERR_NOTFOUND; - } else { - /* Couldn't open in r/w but opened in read-only. */ - WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device); + res = IDirectInputDevice2AImpl_Acquire(iface); + if (res==DI_OK) { + if (-1==(This->joyfd=open(This->joydev->device,O_RDWR))) { + if (-1==(This->joyfd=open(This->joydev->device,O_RDONLY))) { + /* Couldn't open the device at all */ + perror(This->joydev->device); + IDirectInputDevice2AImpl_Unacquire(iface); + return DIERR_NOTFOUND; + } else { + /* Couldn't open in r/w but opened in read-only. */ + WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device); + } } }
- return 0; + return res; }
/****************************************************************************** @@ -633,15 +636,15 @@ static HRESULT WINAPI JoystickAImpl_Acqu static HRESULT WINAPI JoystickAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface) { JoystickImpl *This = (JoystickImpl *)iface; + HRESULT res;
TRACE("(this=%p)\n",This); - if (This->joyfd!=-1) { - close(This->joyfd); - This->joyfd = -1; - return DI_OK; + res = IDirectInputDevice2AImpl_Unacquire(iface); + if (res==DI_OK && This->joyfd!=-1) { + close(This->joyfd); + This->joyfd = -1; } - else - return DI_NOEFFECT; + return res; }
/*