[PATCH] d3dxof: Enable dumping of input x files and templates.

Christian Costa titan.costa at gmail.com
Mon Feb 13 15:12:29 CST 2012


---
 dlls/d3dxof/d3dxof.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index 38882a8..966baa2 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -32,6 +32,7 @@
 #include <stdio.h>
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dxof);
+WINE_DECLARE_DEBUG_CHANNEL(d3dxof_dump);
 
 static const struct IDirectXFileVtbl IDirectXFile_Vtbl;
 static const struct IDirectXFileBinaryVtbl IDirectXFileBinary_Vtbl;
@@ -215,6 +216,21 @@ static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile* iface, LPV
 
   TRACE("File size is %d bytes\n", file_size);
 
+  if (TRACE_ON(d3dxof_dump))
+  {
+    static USHORT num;
+    char tmp[12];
+    HANDLE file;
+    sprintf(tmp, "file%05u.x", num++);
+
+    file = CreateFileA(tmp, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
+    if (file != INVALID_HANDLE_VALUE)
+    {
+      WriteFile(file, file_buffer, file_size, NULL, NULL);
+      CloseHandle(file);
+    }
+  }
+
   object->pDirectXFile = This;
 
   object->buf.pdxf = This;
@@ -284,6 +300,21 @@ static HRESULT WINAPI IDirectXFileImpl_RegisterTemplates(IDirectXFile* iface, LP
   if (!pvData)
     return DXFILEERR_BADVALUE;
 
+  if (TRACE_ON(d3dxof_dump))
+  {
+    static USHORT num;
+    char tmp[16];
+    HANDLE file;
+    sprintf(tmp, "template%05u.x", num++);
+
+    file = CreateFileA(tmp, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
+    if (file != INVALID_HANDLE_VALUE)
+    {
+      WriteFile(file, pvData, cbSize, NULL, NULL);
+      CloseHandle(file);
+    }
+  }
+
   hr = parse_header(&buf, &decomp_buffer);
   if (FAILED(hr))
     goto cleanup;




More information about the wine-patches mailing list