[PATCH 2/5] wined3d: Move the num_untracked_materials lookup out of the main drawing loop.

Henri Verbeet hverbeet at codeweavers.com
Mon Jun 22 03:15:58 CDT 2009


---
 dlls/wined3d/drawprim.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index c644aa2..dcdf21a 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -86,6 +86,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, const struct wined3d_stream_i
     const BYTE *texCoords[WINED3DDP_MAXTEXCOORD];
     const BYTE *diffuse = NULL, *specular = NULL, *normal = NULL, *position = NULL;
     const struct wined3d_stream_info_element *element;
+    UINT num_untracked_materials;
     DWORD tex_mask = 0;
 
     TRACE("Using slow vertex array code\n");
@@ -121,7 +122,8 @@ static void drawStridedSlow(IWineD3DDevice *iface, const struct wined3d_stream_i
     element = &si->elements[WINED3D_FFP_DIFFUSE];
     if (element->data) diffuse = element->data + streamOffset[element->stream_idx];
     else glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
-    if (This->activeContext->num_untracked_materials && element->format_desc->format != WINED3DFMT_A8R8G8B8)
+    num_untracked_materials = This->activeContext->num_untracked_materials;
+    if (num_untracked_materials && element->format_desc->format != WINED3DFMT_A8R8G8B8)
         FIXME("Implement diffuse color tracking from %s\n", debug_d3dformat(element->format_desc->format));
 
     element = &si->elements[WINED3D_FFP_SPECULAR];
@@ -246,7 +248,8 @@ static void drawStridedSlow(IWineD3DDevice *iface, const struct wined3d_stream_i
             const void *ptrToCoords = diffuse + SkipnStrides * si->elements[WINED3D_FFP_DIFFUSE].stride;
 
             diffuse_funcs[si->elements[WINED3D_FFP_DIFFUSE].format_desc->emit_idx](ptrToCoords);
-            if(This->activeContext->num_untracked_materials) {
+            if (num_untracked_materials)
+            {
                 DWORD diffuseColor = ((const DWORD *)ptrToCoords)[0];
                 unsigned char i;
                 float color[4];
@@ -256,7 +259,8 @@ static void drawStridedSlow(IWineD3DDevice *iface, const struct wined3d_stream_i
                 color[2] = D3DCOLOR_B_B(diffuseColor) / 255.0;
                 color[3] = D3DCOLOR_B_A(diffuseColor) / 255.0;
 
-                for(i = 0; i < This->activeContext->num_untracked_materials; i++) {
+                for (i = 0; i < num_untracked_materials; ++i)
+                {
                     glMaterialfv(GL_FRONT_AND_BACK, This->activeContext->untracked_materials[i], color);
                 }
             }
-- 
1.6.0.6




More information about the wine-patches mailing list