[2/3] d3dcompiler: Fix error messages generation.

Matteo Bruni matteo.mystral at gmail.com
Sun Feb 6 10:30:01 CST 2011


-------------- next part --------------
From bf7d73ebe3cc0f5f3289610be608178e6bc2df7b Mon Sep 17 00:00:00 2001
From: Matteo Bruni <mbruni at codeweavers.com>
Date: Wed, 12 Jan 2011 23:06:44 +0100
Subject: d3dcompiler: Fix error messages generation.

This patch also includes some code style fixes.
---
 dlls/d3dcompiler_43/compiler.c |   57 +++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/dlls/d3dcompiler_43/compiler.c b/dlls/d3dcompiler_43/compiler.c
index 42ad09b..3c964e2 100644
--- a/dlls/d3dcompiler_43/compiler.c
+++ b/dlls/d3dcompiler_43/compiler.c
@@ -390,8 +390,8 @@ cleanup:
     return hr;
 }
 
-static HRESULT assemble_shader(const char *preprocShader, const char *preprocMessages,
-                               LPD3DBLOB* ppShader, LPD3DBLOB* ppErrorMsgs)
+static HRESULT assemble_shader(const char *preproc_shader,
+                               ID3DBlob **shader_blob, ID3DBlob **error_messages)
 {
     struct bwriter_shader *shader;
     char *messages = NULL;
@@ -401,51 +401,44 @@ static HRESULT assemble_shader(const char *preprocShader, const char *preprocMes
     int size;
     char *pos;
 
-    shader = SlAssembleShader(preprocShader, &messages);
+    shader = SlAssembleShader(preproc_shader, &messages);
 
-    if(messages || preprocMessages)
+    if (messages)
     {
-        if(preprocMessages)
-        {
-            TRACE("Preprocessor messages:\n");
-            TRACE("%s", preprocMessages);
-        }
-        if(messages)
-        {
-            TRACE("Assembler messages:\n");
-            TRACE("%s", messages);
-        }
+        TRACE("Assembler messages:\n");
+        TRACE("%s", messages);
 
         TRACE("Shader source:\n");
-        TRACE("%s\n", debugstr_a(preprocShader));
+        TRACE("%s\n", debugstr_a(preproc_shader));
 
-        if(ppErrorMsgs)
+        if (error_messages)
         {
+            const char *preproc_messages = *error_messages ? ID3D10Blob_GetBufferPointer(*error_messages) : NULL;
+
             size = (messages ? strlen(messages) : 0) +
-                (preprocMessages ? strlen(preprocMessages) : 0) + 1;
+                (preproc_messages ? strlen(preproc_messages) : 0) + 1;
             hr = D3DCreateBlob(size, &buffer);
-            if(FAILED(hr))
+            if (FAILED(hr))
             {
                 HeapFree(GetProcessHeap(), 0, messages);
-                if(shader) SlDeleteShader(shader);
+                if (shader) SlDeleteShader(shader);
                 return hr;
             }
             pos = ID3D10Blob_GetBufferPointer(buffer);
-            if(preprocMessages)
+            if (preproc_messages)
             {
-                CopyMemory(pos, preprocMessages, strlen(preprocMessages) + 1);
-                pos += strlen(preprocMessages);
+                CopyMemory(pos, preproc_messages, strlen(preproc_messages) + 1);
+                pos += strlen(preproc_messages);
             }
-            if(messages)
-                CopyMemory(pos, messages, strlen(messages) + 1);
+            CopyMemory(pos, messages, strlen(messages) + 1);
 
-            *ppErrorMsgs = buffer;
+            if (*error_messages) ID3D10Blob_Release(*error_messages);
+            *error_messages = buffer;
         }
-
         HeapFree(GetProcessHeap(), 0, messages);
     }
 
-    if(shader == NULL)
+    if (shader == NULL)
     {
         ERR("Asm reading failed\n");
         return D3DXERR_INVALIDDATA;
@@ -453,23 +446,23 @@ static HRESULT assemble_shader(const char *preprocShader, const char *preprocMes
 
     hr = SlWriteBytecode(shader, 9, &res);
     SlDeleteShader(shader);
-    if(FAILED(hr))
+    if (FAILED(hr))
     {
         ERR("SlWriteBytecode failed with 0x%08x\n", hr);
         return D3DXERR_INVALIDDATA;
     }
 
-    if(ppShader)
+    if (shader_blob)
     {
         size = HeapSize(GetProcessHeap(), 0, res);
         hr = D3DCreateBlob(size, &buffer);
-        if(FAILED(hr))
+        if (FAILED(hr))
         {
             HeapFree(GetProcessHeap(), 0, res);
             return hr;
         }
         CopyMemory(ID3D10Blob_GetBufferPointer(buffer), res, size);
-        *ppShader = buffer;
+        *shader_blob = buffer;
     }
 
     HeapFree(GetProcessHeap(), 0, res);
@@ -493,7 +486,7 @@ HRESULT WINAPI D3DAssemble(const void *data, SIZE_T datasize, const char *filena
 
     hr = preprocess_shader(data, datasize, defines, include, error_messages);
     if (SUCCEEDED(hr))
-        hr = assemble_shader(wpp_output, wpp_messages, shader, error_messages);
+        hr = assemble_shader(wpp_output, shader, error_messages);
 
     HeapFree(GetProcessHeap(), 0, wpp_output);
     LeaveCriticalSection(&wpp_mutex);
-- 
1.7.3.4


More information about the wine-patches mailing list