[PATCH] Mystery hang reduction -- clear new allocations

mtewoodbury at gmail.com mtewoodbury at gmail.com
Thu Oct 30 01:09:22 CDT 2014


From: Max TenEyck Woodbury <max+git at mtew.isa-geek.net>

    I was getting mystery frozen processes that cleared when a total screen redraw was forced.
This has been reported numerous times over several years.  It came and went with various releases.
I have been getting it consistantly recently.  I had an idea that it might have something to do
with partially uninitialized drawing data structures, so I started adding HEAP_ZERO_MEMORY flags
in various places.  This particular set cleared the problem, at least for now...

diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
index cf5378c..cf1c814 100644
--- a/dlls/wined3d/vertexdeclaration.c
+++ b/dlls/wined3d/vertexdeclaration.c
@@ -178,7 +178,8 @@ static HRESULT vertexdeclaration_init(struct wined3d_vertex_declaration *declara
     declaration->parent = parent;
     declaration->parent_ops = parent_ops;
     declaration->device = device;
-    declaration->elements = HeapAlloc(GetProcessHeap(), 0, sizeof(*declaration->elements) * element_count);
+    declaration->elements = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+            sizeof(*declaration->elements) * element_count);
     if (!declaration->elements)
     {
         ERR("Failed to allocate elements memory.\n");
@@ -316,7 +317,7 @@ static unsigned int convert_fvf_to_declaration(const struct wined3d_gl_info *gl_
            has_psize + has_diffuse + has_specular + num_textures;
 
     state.gl_info = gl_info;
-    state.elements = HeapAlloc(GetProcessHeap(), 0, size * sizeof(*state.elements));
+    state.elements = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size * sizeof(*state.elements));
     if (!state.elements) return ~0U;
     state.offset = 0;
     state.idx = 0;
-- 
1.8.0.rc0.18.gf84667d




More information about the wine-devel mailing list