Vitaliy Margolen : dinput: Move mouse to using new EnumObjects from base class.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Dec 28 07:40:30 CST 2006


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

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Wed Dec 27 16:32:36 2006 -0700

dinput: Move mouse to using new EnumObjects from base class.

---

 dlls/dinput/mouse.c |  110 ++------------------------------------------------
 1 files changed, 5 insertions(+), 105 deletions(-)

diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index 4549ae0..935c64b 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -42,11 +42,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(dinput);
 /* Wine mouse driver object instances */
 #define WINE_MOUSE_X_AXIS_INSTANCE   0
 #define WINE_MOUSE_Y_AXIS_INSTANCE   1
-#define WINE_MOUSE_Z_AXIS_INSTANCE   2
-#define WINE_MOUSE_L_BUTTON_INSTANCE 0
-#define WINE_MOUSE_R_BUTTON_INSTANCE 1
-#define WINE_MOUSE_M_BUTTON_INSTANCE 2
-#define WINE_MOUSE_D_BUTTON_INSTANCE 3
 
 /* ------------------------------- */
 /* Wine mouse internal data format */
@@ -208,11 +203,8 @@ static SysMouseImpl *alloc_device(REFGUI
             df->rgodf[i].dwType = DIDFT_MAKEINSTANCE(i) | DIDFT_PSHBUTTON;
 
     newDevice->base.data_format.wine_df = df;
-    if (create_DataFormat(&c_dfDIMouse2, &newDevice->base.data_format) == DI_OK)
-    {
-        IDirectInput_AddRef((LPDIRECTINPUTDEVICE8A)newDevice->dinput);
-        return newDevice;
-    }
+    IDirectInput_AddRef((LPDIRECTINPUTDEVICE8A)newDevice->dinput);
+    return newDevice;
 
 failed:
     if (df) HeapFree(GetProcessHeap(), 0, df->rgodf);
@@ -653,7 +645,7 @@ static HRESULT WINAPI SysMouseAImpl_GetC
     else
 	devcaps.dwDevType = DIDEVTYPE_MOUSE | (DIDEVTYPEMOUSE_TRADITIONAL << 8);
     devcaps.dwAxes = 3;
-    devcaps.dwButtons = 3;
+    devcaps.dwButtons = 8;
     devcaps.dwPOVs = 0;
     devcaps.dwFFSamplePeriod = 0;
     devcaps.dwFFMinTimeResolution = 0;
@@ -668,98 +660,6 @@ static HRESULT WINAPI SysMouseAImpl_GetC
 
 
 /******************************************************************************
-  *     EnumObjects : enumerate the different buttons and axis...
-  */
-static HRESULT WINAPI SysMouseAImpl_EnumObjects(
-	LPDIRECTINPUTDEVICE8A iface,
-	LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback,
-	LPVOID lpvRef,
-	DWORD dwFlags)
-{
-    SysMouseImpl *This = (SysMouseImpl *)iface;
-    DIDEVICEOBJECTINSTANCEA ddoi;
-    
-    TRACE("(this=%p,%p,%p,%08x)\n", This, lpCallback, lpvRef, dwFlags);
-    if (TRACE_ON(dinput)) {
-	TRACE("  - flags = ");
-	_dump_EnumObjects_flags(dwFlags);
-	TRACE("\n");
-    }
-    
-    /* Only the fields till dwFFMaxForce are relevant */
-    memset(&ddoi, 0, sizeof(ddoi));
-    ddoi.dwSize = FIELD_OFFSET(DIDEVICEOBJECTINSTANCEA, dwFFMaxForce);
-    
-    /* In a mouse, we have : two relative axis and three buttons */
-    if ((dwFlags == DIDFT_ALL) ||
-	(dwFlags & DIDFT_AXIS)) {
-	/* X axis */
-	ddoi.guidType = GUID_XAxis;
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_X_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_X_AXIS_INSTANCE) | DIDFT_RELAXIS;
-	strcpy(ddoi.tszName, "X-Axis");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-	
-	/* Y axis */
-	ddoi.guidType = GUID_YAxis;
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_Y_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_Y_AXIS_INSTANCE) | DIDFT_RELAXIS;
-	strcpy(ddoi.tszName, "Y-Axis");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-	
-	/* Z axis */
-	ddoi.guidType = GUID_ZAxis;
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_Z_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_Z_AXIS_INSTANCE) | DIDFT_RELAXIS;
-	strcpy(ddoi.tszName, "Z-Axis");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-    }
-
-    if ((dwFlags == DIDFT_ALL) ||
-	(dwFlags & DIDFT_BUTTON)) {
-	ddoi.guidType = GUID_Button;
-	
-	/* Left button */
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_L_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_L_BUTTON_INSTANCE) | DIDFT_PSHBUTTON;
-	strcpy(ddoi.tszName, "Left-Button");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-	
-	/* Right button */
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_R_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_R_BUTTON_INSTANCE) | DIDFT_PSHBUTTON;
-	strcpy(ddoi.tszName, "Right-Button");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-	
-	/* Middle button */
-        ddoi.dwOfs = This->base.data_format.offsets[WINE_MOUSE_M_POSITION];
-	ddoi.dwType = DIDFT_MAKEINSTANCE(WINE_MOUSE_M_BUTTON_INSTANCE) | DIDFT_PSHBUTTON;
-	strcpy(ddoi.tszName, "Middle-Button");
-	_dump_OBJECTINSTANCEA(&ddoi);
-	if (lpCallback(&ddoi, lpvRef) != DIENUM_CONTINUE) return DI_OK;
-    }
-    
-    return DI_OK;
-}
-
-static HRESULT WINAPI SysMouseWImpl_EnumObjects(LPDIRECTINPUTDEVICE8W iface, LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback,	LPVOID lpvRef,DWORD dwFlags)
-{
-    SysMouseImpl *This = (SysMouseImpl *)iface;
-    
-    device_enumobjects_AtoWcb_data data;
-    
-    data.lpCallBack = lpCallback;
-    data.lpvRef = lpvRef;
-    
-    return SysMouseAImpl_EnumObjects((LPDIRECTINPUTDEVICE8A) This, (LPDIENUMDEVICEOBJECTSCALLBACKA) DIEnumDevicesCallbackAtoW, (LPVOID) &data, dwFlags);
-}
-
-/******************************************************************************
   *     GetDeviceInfo : get information about a device's identity
   */
 static HRESULT WINAPI SysMouseAImpl_GetDeviceInfo(
@@ -801,7 +701,7 @@ static const IDirectInputDevice8AVtbl Sy
     IDirectInputDevice2AImpl_AddRef,
     SysMouseAImpl_Release,
     SysMouseAImpl_GetCapabilities,
-    SysMouseAImpl_EnumObjects,
+    IDirectInputDevice2AImpl_EnumObjects,
     SysMouseAImpl_GetProperty,
     IDirectInputDevice2AImpl_SetProperty,
     SysMouseAImpl_Acquire,
@@ -843,7 +743,7 @@ static const IDirectInputDevice8WVtbl Sy
     XCAST(AddRef)IDirectInputDevice2AImpl_AddRef,
     XCAST(Release)SysMouseAImpl_Release,
     XCAST(GetCapabilities)SysMouseAImpl_GetCapabilities,
-    SysMouseWImpl_EnumObjects,
+    IDirectInputDevice2WImpl_EnumObjects,
     XCAST(GetProperty)SysMouseAImpl_GetProperty,
     XCAST(SetProperty)IDirectInputDevice2AImpl_SetProperty,
     XCAST(Acquire)SysMouseAImpl_Acquire,




More information about the wine-cvs mailing list