[PATCH] DDraw: pass proper parameters to CheckDeviceFormat=0A=

Stefan Doesinger stefan at codeweavers.com
Wed Aug 27 14:03:26 CDT 2008


=0A=
---=0A=
 dlls/ddraw/device.c |   46 =
+++++++++++++++++++++++++++++++++++-----------=0A=
 1 files changed, 35 insertions(+), 11 deletions(-)=0A=
=0A=
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c=0A=
index 94f3949..84d55e0 100644=0A=
--- a/dlls/ddraw/device.c=0A=
+++ b/dlls/ddraw/device.c=0A=
@@ -1164,6 +1164,7 @@ =
IDirect3DDeviceImpl_7_EnumTextureFormats(IDirect3DDevice7 *iface,=0A=
 {=0A=
     ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);=0A=
     HRESULT hr;=0A=
+    WINED3DDISPLAYMODE mode;=0A=
     int i;=0A=
 =0A=
     WINED3DFORMAT FormatList[] =3D {=0A=
@@ -1202,14 +1203,25 @@ =
IDirect3DDeviceImpl_7_EnumTextureFormats(IDirect3DDevice7 *iface,=0A=
         return DDERR_INVALIDPARAMS;=0A=
 =0A=
     EnterCriticalSection(&ddraw_cs);=0A=
+=0A=
+    memset(&mode, 0, sizeof(mode));=0A=
+    hr =3D IWineD3DDevice_GetDisplayMode(This->ddraw->wineD3DDevice,=0A=
+                                       0,=0A=
+                                       &mode);=0A=
+    if(FAILED(hr)) {=0A=
+        LeaveCriticalSection(&ddraw_cs);=0A=
+        WARN("Cannot get the current adapter format\n");=0A=
+        return hr;=0A=
+    }=0A=
+=0A=
     for(i =3D 0; i < sizeof(FormatList) / sizeof(WINED3DFORMAT); i++)=0A=
     {=0A=
         hr =3D IWineD3D_CheckDeviceFormat(This->ddraw->wineD3D,=0A=
-                                        0 /* Adapter */,=0A=
-                                        0 /* DeviceType */,=0A=
-                                        0 /* AdapterFormat */,=0A=
+                                        WINED3DADAPTER_DEFAULT,=0A=
+                                        WINED3DDEVTYPE_HAL,=0A=
+                                        mode.Format,=0A=
                                         0 /* Usage */,=0A=
-                                        0 /* ResourceType */,=0A=
+                                        WINED3DRTYPE_TEXTURE,=0A=
                                         FormatList[i],=0A=
                                         SURFACE_OPENGL);=0A=
         if(hr =3D=3D D3D_OK)=0A=
@@ -1234,11 +1246,11 @@ =
IDirect3DDeviceImpl_7_EnumTextureFormats(IDirect3DDevice7 *iface,=0A=
     for(i =3D 0; i < sizeof(BumpFormatList) / sizeof(WINED3DFORMAT); =
i++)=0A=
     {=0A=
         hr =3D IWineD3D_CheckDeviceFormat(This->ddraw->wineD3D,=0A=
-                                        0 /* Adapter */,=0A=
-                                        0 /* DeviceType */,=0A=
-                                        0 /* AdapterFormat */,=0A=
+                                        WINED3DADAPTER_DEFAULT,=0A=
+                                        WINED3DDEVTYPE_HAL,=0A=
+                                        mode.Format,=0A=
                                         =
WINED3DUSAGE_QUERY_LEGACYBUMPMAP,=0A=
-                                        0 /* ResourceType */,=0A=
+                                        WINED3DRTYPE_TEXTURE,=0A=
                                         BumpFormatList[i],=0A=
                                         SURFACE_OPENGL);=0A=
         if(hr =3D=3D D3D_OK)=0A=
@@ -1317,6 +1329,7 @@ =
IDirect3DDeviceImpl_2_EnumTextureFormats(IDirect3DDevice2 *iface,=0A=
     ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);=0A=
     HRESULT hr;=0A=
     int i;=0A=
+    WINED3DDISPLAYMODE mode;=0A=
 =0A=
     WINED3DFORMAT FormatList[] =3D {=0A=
         /* 32 bit */=0A=
@@ -1341,14 +1354,25 @@ =
IDirect3DDeviceImpl_2_EnumTextureFormats(IDirect3DDevice2 *iface,=0A=
         return DDERR_INVALIDPARAMS;=0A=
 =0A=
     EnterCriticalSection(&ddraw_cs);=0A=
+=0A=
+    memset(&mode, 0, sizeof(mode));=0A=
+    hr =3D IWineD3DDevice_GetDisplayMode(This->ddraw->wineD3DDevice,=0A=
+                                       0,=0A=
+                                       &mode);=0A=
+    if(FAILED(hr)) {=0A=
+        LeaveCriticalSection(&ddraw_cs);=0A=
+        WARN("Cannot get the current adapter format\n");=0A=
+        return hr;=0A=
+    }=0A=
+=0A=
     for(i =3D 0; i < sizeof(FormatList) / sizeof(WINED3DFORMAT); i++)=0A=
     {=0A=
         hr =3D IWineD3D_CheckDeviceFormat(This->ddraw->wineD3D,=0A=
                                         0 /* Adapter */,=0A=
-                                        0 /* DeviceType */,=0A=
-                                        0 /* AdapterFormat */,=0A=
+                                        WINED3DDEVTYPE_HAL,=0A=
+                                        mode.Format,=0A=
                                         0 /* Usage */,=0A=
-                                        0 /* ResourceType */,=0A=
+                                        WINED3DRTYPE_TEXTURE,=0A=
                                         FormatList[i],=0A=
                                         SURFACE_OPENGL);=0A=
         if(hr =3D=3D D3D_OK)=0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0031_01C909E1.8088A460--




More information about the wine-patches mailing list