Paul Gofman : d3dx9: Factor out free_parameter_data() function.

Alexandre Julliard julliard at winehq.org
Tue Apr 25 16:22:36 CDT 2017


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

Author: Paul Gofman <gofmanp at gmail.com>
Date:   Mon Apr 24 14:36:50 2017 +0300

d3dx9: Factor out free_parameter_data() function.

Signed-off-by: Paul Gofman <gofmanp at gmail.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3dx9_36/effect.c | 61 ++++++++++++++++++++++++--------------------------
 1 file changed, 29 insertions(+), 32 deletions(-)

diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index 1fd99832..0f5e3e5 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -502,37 +502,8 @@ static void free_sampler(struct d3dx_sampler *sampler)
     HeapFree(GetProcessHeap(), 0, sampler->states);
 }
 
-static void free_parameter(struct d3dx_parameter *param, BOOL element, BOOL child)
+static void free_parameter_data(struct d3dx_parameter *param, BOOL child)
 {
-    unsigned int i;
-
-    TRACE("Free parameter %p, name %s, type %s, child %s\n", param, param->name,
-            debug_d3dxparameter_type(param->type), child ? "yes" : "no");
-
-    if (param->param_eval)
-    {
-        d3dx_free_param_eval(param->param_eval);
-        param->param_eval = NULL;
-    }
-
-    if (param->annotations)
-    {
-        for (i = 0; i < param->annotation_count; ++i)
-            free_parameter(&param->annotations[i], FALSE, FALSE);
-        HeapFree(GetProcessHeap(), 0, param->annotations);
-        param->annotations = NULL;
-    }
-
-    if (param->members)
-    {
-        unsigned int count = param->element_count ? param->element_count : param->member_count;
-
-        for (i = 0; i < count; ++i)
-            free_parameter(&param->members[i], param->element_count != 0, TRUE);
-        HeapFree(GetProcessHeap(), 0, param->members);
-        param->members = NULL;
-    }
-
     if (param->class == D3DXPC_OBJECT && !param->element_count)
     {
         switch (param->type)
@@ -564,12 +535,38 @@ static void free_parameter(struct d3dx_parameter *param, BOOL element, BOOL chil
                 break;
         }
     }
-
     if (!child)
-    {
         HeapFree(GetProcessHeap(), 0, param->data);
+}
+
+static void free_parameter(struct d3dx_parameter *param, BOOL element, BOOL child)
+{
+    unsigned int i;
+
+    TRACE("Free parameter %p, name %s, type %s, element %#x, child %#x.\n", param, param->name,
+            debug_d3dxparameter_type(param->type), element, child);
+
+    if (param->param_eval)
+        d3dx_free_param_eval(param->param_eval);
+
+    if (param->annotations)
+    {
+        for (i = 0; i < param->annotation_count; ++i)
+            free_parameter(&param->annotations[i], FALSE, FALSE);
+        HeapFree(GetProcessHeap(), 0, param->annotations);
     }
 
+    if (param->members)
+    {
+        unsigned int count = param->element_count ? param->element_count : param->member_count;
+
+        for (i = 0; i < count; ++i)
+            free_parameter(&param->members[i], param->element_count != 0, TRUE);
+        HeapFree(GetProcessHeap(), 0, param->members);
+    }
+
+    free_parameter_data(param, child);
+
     /* only the parent has to release name and semantic */
     if (!element)
     {




More information about the wine-cvs mailing list