[PATCH 1/5] dinput: Reduce data format trace verbosity.

Rémi Bernon rbernon at codeweavers.com
Thu Oct 28 02:03:50 CDT 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/dinput/device.c | 63 +++++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 36 deletions(-)

diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
index 040a97eb06b..3e398f11dad 100644
--- a/dlls/dinput/device.c
+++ b/dlls/dinput/device.c
@@ -67,6 +67,20 @@ static inline IDirectInputDevice8W *IDirectInputDevice8W_from_impl( struct dinpu
     return &This->IDirectInputDevice8W_iface;
 }
 
+static inline const char *debugstr_didataformat( const DIDATAFORMAT *data )
+{
+    if (!data) return "(null)";
+    return wine_dbg_sprintf( "%p dwSize %u, dwObjsize %u, dwFlags %#x, dwDataSize %u, dwNumObjs %u, rgodf %p",
+                             data, data->dwSize, data->dwObjSize, data->dwFlags, data->dwDataSize, data->dwNumObjs, data->rgodf );
+}
+
+static inline const char *debugstr_diobjectdataformat( const DIOBJECTDATAFORMAT *data )
+{
+    if (!data) return "(null)";
+    return wine_dbg_sprintf( "%p, pguid %s, dwOfs %#x, dwType %#x, dwFlags %#x", data,
+                             debugstr_guid( data->pguid ), data->dwOfs, data->dwType, data->dwFlags );
+}
+
 /******************************************************************************
  *	Various debugging tools
  */
@@ -225,40 +239,6 @@ static const char *_dump_dinput_GUID( const GUID *guid )
     return debugstr_guid(guid);
 }
 
-static void _dump_DIDATAFORMAT( const DIDATAFORMAT *df )
-{
-    unsigned int i;
-
-    TRACE("Dumping DIDATAFORMAT structure:\n");
-    TRACE("  - dwSize: %d\n", df->dwSize);
-    if (df->dwSize != sizeof(DIDATAFORMAT)) {
-        WARN("Non-standard DIDATAFORMAT structure size %d\n", df->dwSize);
-    }
-    TRACE("  - dwObjsize: %d\n", df->dwObjSize);
-    if (df->dwObjSize != sizeof(DIOBJECTDATAFORMAT)) {
-        WARN("Non-standard DIOBJECTDATAFORMAT structure size %d\n", df->dwObjSize);
-    }
-    TRACE("  - dwFlags: 0x%08x (", df->dwFlags);
-    switch (df->dwFlags) {
-        case DIDF_ABSAXIS: TRACE("DIDF_ABSAXIS"); break;
-	case DIDF_RELAXIS: TRACE("DIDF_RELAXIS"); break;
-	default: TRACE("unknown"); break;
-    }
-    TRACE(")\n");
-    TRACE("  - dwDataSize: %d\n", df->dwDataSize);
-    TRACE("  - dwNumObjs: %d\n", df->dwNumObjs);
-    
-    for (i = 0; i < df->dwNumObjs; i++) {
-	TRACE("  - Object %d:\n", i);
-	TRACE("      * GUID: %s ('%s')\n", debugstr_guid(df->rgodf[i].pguid), _dump_dinput_GUID(df->rgodf[i].pguid));
-        TRACE("      * dwOfs: %d\n", df->rgodf[i].dwOfs);
-        TRACE("      * dwType: 0x%08x\n", df->rgodf[i].dwType);
-	TRACE("        "); _dump_EnumObjects_flags(df->rgodf[i].dwType); TRACE("\n");
-        TRACE("      * dwFlags: 0x%08x\n", df->rgodf[i].dwFlags);
-	TRACE("        "); _dump_ObjectDataFormat_flags(df->rgodf[i].dwFlags); TRACE("\n");
-    }
-}
-
 /******************************************************************************
  * Get the default and the app-specific config keys.
  */
@@ -933,11 +913,16 @@ static HRESULT WINAPI dinput_device_SetDataFormat( IDirectInputDevice8W *iface,
 {
     struct dinput_device *This = impl_from_IDirectInputDevice8W( iface );
     HRESULT res = DI_OK;
+    ULONG i;
 
     TRACE( "iface %p, format %p.\n", iface, format );
 
     if (!format) return E_POINTER;
-    _dump_DIDATAFORMAT( format );
+    if (TRACE_ON( dinput ))
+    {
+        TRACE( "user format %s\n", debugstr_didataformat( format ) );
+        for (i = 0; i < format->dwNumObjs; ++i) TRACE( "  %u: object %s\n", i, debugstr_diobjectdataformat( format->rgodf + i ) );
+    }
 
     if (format->dwSize != sizeof(DIDATAFORMAT)) return DIERR_INVALIDPARAM;
     if (format->dwObjSize != sizeof(DIOBJECTDATAFORMAT)) return DIERR_INVALIDPARAM;
@@ -2182,7 +2167,7 @@ HRESULT dinput_device_init( IDirectInputDevice8W *iface )
 {
     struct dinput_device *impl = impl_from_IDirectInputDevice8W( iface );
     DIDATAFORMAT *format = impl->data_format.wine_df;
-    ULONG size;
+    ULONG i, size;
 
     IDirectInputDevice8_EnumObjects( iface, enum_objects_init, iface, DIDFT_ALL );
     if (format->dwDataSize > DEVICE_STATE_MAX_SIZE)
@@ -2199,5 +2184,11 @@ HRESULT dinput_device_init( IDirectInputDevice8W *iface )
     format->dwNumObjs = 0;
     IDirectInputDevice8_EnumObjects( iface, enum_objects_init, iface, DIDFT_ALL );
 
+    if (TRACE_ON( dinput ))
+    {
+        TRACE( "device format %s\n", debugstr_didataformat( format ) );
+        for (i = 0; i < format->dwNumObjs; ++i) TRACE( "  %u: object %s\n", i, debugstr_diobjectdataformat( format->rgodf + i ) );
+    }
+
     return DI_OK;
 }
-- 
2.33.0




More information about the wine-devel mailing list