Changelog
Minor fixes - Remove light debug statements, handle disabled specular material properly, release surfaces when debugging and clean up trace a little
Jason
Index: dlls/d3d8/device.c =================================================================== RCS file: /home/wine/wine/dlls/d3d8/device.c,v retrieving revision 1.83 diff -u -r1.83 device.c --- dlls/d3d8/device.c 30 Sep 2003 00:21:07 -0000 1.83 +++ dlls/d3d8/device.c 2 Oct 2003 20:29:39 -0000 @@ -1659,6 +1659,10 @@ if (This->StateBlock->renderstate[D3DRS_SPECULARENABLE]) { glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*) &This->UpdateStateBlock->material.Specular); checkGLcall("glMaterialfv"); + } else { + float black[4] = {0.0f, 0.0f, 0.0f, 0.0f}; + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &black[0]); + checkGLcall("glMaterialfv"); } glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, (float*) &This->UpdateStateBlock->material.Emissive); checkGLcall("glMaterialfv"); @@ -1829,8 +1833,6 @@ if (object->glIndex != -1) { setup_light(iface, object->glIndex, object); } - DUMP_LIGHT_CHAIN(); - return D3D_OK; } HRESULT WINAPI IDirect3DDevice8Impl_GetLight(LPDIRECT3DDEVICE8 iface, DWORD Index,D3DLIGHT8* pLight) { @@ -1886,7 +1888,7 @@ D3DLIGHT8 lightParms; /* Warning - untested code :-) Prob safe to change fixme to a trace but wait until someone confirms it seems to work! */ - FIXME("Light enabled requested but light not defined, so defining one!\n"); + TRACE("Light enabled requested but light not defined, so defining one!\n"); lightParms.Type = D3DLIGHT_DIRECTIONAL; lightParms.Diffuse.r = 1.0; lightParms.Diffuse.g = 1.0; @@ -2074,7 +2076,6 @@ } } } - DUMP_LIGHT_CHAIN(); return D3D_OK; } HRESULT WINAPI IDirect3DDevice8Impl_GetLightEnable(LPDIRECT3DDEVICE8 iface, DWORD Index,BOOL* pEnable) { Index: dlls/d3d8/drawprim.c =================================================================== RCS file: /home/wine/wine/dlls/d3d8/drawprim.c,v retrieving revision 1.11 diff -u -r1.11 drawprim.c --- dlls/d3d8/drawprim.c 25 Sep 2003 20:22:21 -0000 1.11 +++ dlls/d3d8/drawprim.c 2 Oct 2003 20:29:48 -0000 @@ -203,8 +203,14 @@ checkGLcall("glMaterialfv"); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, (float*) &This->StateBlock->material.Diffuse); checkGLcall("glMaterialfv"); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*) &This->StateBlock->material.Specular); - checkGLcall("glMaterialfv"); + if (This->StateBlock->renderstate[D3DRS_SPECULARENABLE]) { + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*) &This->StateBlock->material.Specular); + checkGLcall("glMaterialfv"); + } else { + float black[4] = {0.0f, 0.0f, 0.0f, 0.0f}; + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &black[0]); + checkGLcall("glMaterialfv"); + } glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, (float*) &This->StateBlock->material.Emissive); checkGLcall("glMaterialfv"); } @@ -1478,9 +1484,10 @@ for (textureNo = 0; textureNo < GL_LIMITS(textures); ++textureNo) { if (This->StateBlock->textures[textureNo] != NULL) { sprintf(buffer, "/tmp/texture_%ld_%d.ppm", primCounter, textureNo); - TRACE("Saving texture %s\n", buffer); + TRACE("Saving texture %s (Format:%s)\n", buffer, debug_d3dformat(((IDirect3DBaseTexture8Impl *)This->StateBlock->textures[textureNo])->format)); IDirect3DTexture8Impl_GetSurfaceLevel((LPDIRECT3DTEXTURE8) This->StateBlock->textures[textureNo], 0, &pSur); IDirect3DSurface8Impl_SaveSnapshot(pSur, buffer); + IDirect3DSurface8Impl_ReleaseRef(pSur); } } }