[PATCH] WineD3D: Fix the num blend values -> type match=0A=

Stefan Doesinger stefan at codeweavers.com
Mon Nov 3 00:38:14 CST 2008


=0A=
The old code works, but I think it is ugly. Furthermore it=0A=
contains an implicit cast from a DWORD to a BYTE.=0A=
---=0A=
 dlls/d3d9/vertexdeclaration.c |   12 ++++++++++--=0A=
 dlls/wined3d/device.c         |   12 ++++++++++--=0A=
 2 files changed, 20 insertions(+), 4 deletions(-)=0A=
=0A=
diff --git a/dlls/d3d9/vertexdeclaration.c =
b/dlls/d3d9/vertexdeclaration.c=0A=
index 42b46ce..4631248 100644=0A=
--- a/dlls/d3d9/vertexdeclaration.c=0A=
+++ b/dlls/d3d9/vertexdeclaration.c=0A=
@@ -106,8 +106,16 @@ HRESULT vdecl_convert_fvf(=0A=
     if (has_blend && (num_blends > 0)) {=0A=
         if (((fvf & D3DFVF_XYZB5) =3D=3D D3DFVF_XYZB2) && (fvf & =
D3DFVF_LASTBETA_D3DCOLOR))=0A=
             elements[idx].Type =3D D3DDECLTYPE_D3DCOLOR;=0A=
-        else=0A=
-            elements[idx].Type =3D D3DDECLTYPE_FLOAT1 + num_blends - 1;=0A=
+        else {=0A=
+            switch(num_blends) {=0A=
+                case 1: elements[idx].Type =3D D3DDECLTYPE_FLOAT1; =
break;=0A=
+                case 2: elements[idx].Type =3D D3DDECLTYPE_FLOAT2; =
break;=0A=
+                case 3: elements[idx].Type =3D D3DDECLTYPE_FLOAT3; =
break;=0A=
+                case 4: elements[idx].Type =3D D3DDECLTYPE_FLOAT4; =
break;=0A=
+                default:=0A=
+                    ERR("Unexpected amount of blend values: %u\n", =
num_blends);=0A=
+            }=0A=
+        }=0A=
         elements[idx].Usage =3D D3DDECLUSAGE_BLENDWEIGHT;=0A=
         elements[idx].UsageIndex =3D 0;=0A=
         idx++;=0A=
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c=0A=
index 6307950..83bc436 100644=0A=
--- a/dlls/wined3d/device.c=0A=
+++ b/dlls/wined3d/device.c=0A=
@@ -1792,8 +1792,16 @@ static unsigned int =
ConvertFvfToDeclaration(IWineD3DDeviceImpl *This, /* For the=0A=
     if (has_blend && (num_blends > 0)) {=0A=
         if (((fvf & WINED3DFVF_XYZB5) =3D=3D WINED3DFVF_XYZB2) && (fvf =
& WINED3DFVF_LASTBETA_D3DCOLOR))=0A=
             elements[idx].Type =3D WINED3DDECLTYPE_D3DCOLOR;=0A=
-        else=0A=
-            elements[idx].Type =3D WINED3DDECLTYPE_FLOAT1 + num_blends =
- 1;=0A=
+        else {=0A=
+            switch(num_blends) {=0A=
+                case 1: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT1; =
break;=0A=
+                case 2: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT2; =
break;=0A=
+                case 3: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT3; =
break;=0A=
+                case 4: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT4; =
break;=0A=
+                default:=0A=
+                    ERR("Unexpected amount of blend values: %u\n", =
num_blends);=0A=
+            }=0A=
+        }=0A=
         elements[idx].Usage =3D WINED3DDECLUSAGE_BLENDWEIGHT;=0A=
         elements[idx].UsageIndex =3D 0;=0A=
         idx++;=0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0013_01C93DE3.B0153460--




More information about the wine-patches mailing list