Vitaliy Margolen : dinput: Move keyboard to using new GetObjectInfo.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jan 4 04:45:07 CST 2007


Module: wine
Branch: master
Commit: 20ba784aace697fed167bb702e175c0f1b0a1a29
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=20ba784aace697fed167bb702e175c0f1b0a1a29

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Wed Jan  3 23:04:31 2007 -0700

dinput: Move keyboard to using new GetObjectInfo.

---

 dlls/dinput/keyboard.c |   58 +++++++++++------------------------------------
 1 files changed, 14 insertions(+), 44 deletions(-)

diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index ce04ff9..b77e258 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -415,33 +415,18 @@ SysKeyboardAImpl_GetObjectInfo(
 	DWORD dwObj,
 	DWORD dwHow)
 {
-    SysKeyboardImpl *This = (SysKeyboardImpl *)iface;
-    DIDEVICEOBJECTINSTANCEA ddoi;
-    DWORD dwSize = pdidoi->dwSize;
-    
-    TRACE("(this=%p,%p,%d,0x%08x)\n", This, pdidoi, dwObj, dwHow);
-
-    if (dwHow == DIPH_BYID) {
-        WARN(" querying by id not supported yet...\n");
-	return DI_OK;
-    }
+    HRESULT res;
 
-    memset(pdidoi, 0, dwSize);
-    memset(&ddoi, 0, sizeof(ddoi));
+    res = IDirectInputDevice2AImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow);
+    if (res != DI_OK) return res;
 
-    ddoi.dwSize = dwSize;
-    ddoi.guidType = GUID_Key;
-    ddoi.dwOfs = dwObj;
-    ddoi.dwType = DIDFT_MAKEINSTANCE(dwObj) | DIDFT_BUTTON;
-    if (!GetKeyNameTextA(((dwObj & 0x7f) << 16) | ((dwObj & 0x80) << 17), ddoi.tszName, sizeof(ddoi.tszName)))
+    if (!GetKeyNameTextA((DIDFT_GETINSTANCE(pdidoi->dwType) & 0x80) << 17 |
+                         (DIDFT_GETINSTANCE(pdidoi->dwType) & 0x7f) << 16,
+                         pdidoi->tszName, sizeof(pdidoi->tszName)))
         return DIERR_OBJECTNOTFOUND;
 
-    /* And return our just filled device object instance structure */
-    memcpy(pdidoi, &ddoi, (dwSize < sizeof(ddoi) ? dwSize : sizeof(ddoi)));
-    
     _dump_OBJECTINSTANCEA(pdidoi);
-
-    return DI_OK;
+    return res;
 }
 
 static HRESULT WINAPI SysKeyboardWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
@@ -449,33 +434,18 @@ static HRESULT WINAPI SysKeyboardWImpl_G
 						     DWORD dwObj,
 						     DWORD dwHow)
 {
-    SysKeyboardImpl *This = (SysKeyboardImpl *)iface;
-    DIDEVICEOBJECTINSTANCEW ddoi;
-    DWORD dwSize = pdidoi->dwSize;
-    
-    TRACE("(this=%p,%p,%d,0x%08x)\n", This, pdidoi, dwObj, dwHow);
-
-    if (dwHow == DIPH_BYID) {
-        WARN(" querying by id not supported yet...\n");
-	return DI_OK;
-    }
+    HRESULT res;
 
-    memset(pdidoi, 0, dwSize);
-    memset(&ddoi, 0, sizeof(ddoi));
+    res = IDirectInputDevice2WImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow);
+    if (res != DI_OK) return res;
 
-    ddoi.dwSize = dwSize;
-    ddoi.guidType = GUID_Key;
-    ddoi.dwOfs = dwObj;
-    ddoi.dwType = DIDFT_MAKEINSTANCE(dwObj) | DIDFT_BUTTON;
-    if (!GetKeyNameTextW(((dwObj & 0x7f) << 16) | ((dwObj & 0x80) << 17), ddoi.tszName, sizeof(ddoi.tszName)))
+    if (!GetKeyNameTextW((DIDFT_GETINSTANCE(pdidoi->dwType) & 0x80) << 17 |
+                         (DIDFT_GETINSTANCE(pdidoi->dwType) & 0x7f) << 16,
+                         pdidoi->tszName, sizeof(pdidoi->tszName)))
         return DIERR_OBJECTNOTFOUND;
 
-    /* And return our just filled device object instance structure */
-    memcpy(pdidoi, &ddoi, (dwSize < sizeof(ddoi) ? dwSize : sizeof(ddoi)));
-    
     _dump_OBJECTINSTANCEW(pdidoi);
-
-    return DI_OK;
+    return res;
 }
 
 /******************************************************************************




More information about the wine-cvs mailing list