[PATCH] DDraw: Implement IDirectDraw7::GetFourCCCodes=0A=

Stefan Doesinger stefan at codeweavers.com
Wed Jul 30 15:55:20 CDT 2008


=0A=
---=0A=
 dlls/ddraw/ddraw.c |   37 ++++++++++++++++++++++++++++++++++---=0A=
 1 files changed, 34 insertions(+), 3 deletions(-)=0A=
=0A=
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c=0A=
index 31dfd1d..8eac776 100644=0A=
--- a/dlls/ddraw/ddraw.c=0A=
+++ b/dlls/ddraw/ddraw.c=0A=
@@ -879,9 +879,40 @@ IDirectDrawImpl_GetFourCCCodes(IDirectDraw7 *iface,=0A=
                                DWORD *NumCodes, DWORD *Codes)=0A=
 {=0A=
     ICOM_THIS_FROM(IDirectDrawImpl, IDirectDraw7, iface);=0A=
-    FIXME("(%p)->(%p, %p): Stub!\n", This, NumCodes, Codes);=0A=
+    WINED3DFORMAT formats[] =3D {=0A=
+        WINED3DFMT_YUY2, WINED3DFMT_UYVY,=0A=
+        WINED3DFMT_DXT1, WINED3DFMT_DXT2, WINED3DFMT_DXT3, =
WINED3DFMT_DXT4, WINED3DFMT_DXT5,=0A=
+    };=0A=
+    DWORD count =3D 0, i, outsize;=0A=
+    HRESULT hr;=0A=
+    WINED3DDISPLAYMODE d3ddm;=0A=
+    TRACE("(%p)->(%p, %p)\n", This, NumCodes, Codes);=0A=
+=0A=
+    IWineD3DDevice_GetDisplayMode(This->wineD3DDevice,=0A=
+                                  0 /* swapchain 0 */,=0A=
+                                  &d3ddm);=0A=
+=0A=
+    outsize =3D NumCodes && Codes ? *NumCodes : 0;=0A=
 =0A=
-    if(NumCodes) *NumCodes =3D 0;=0A=
+    for(i =3D 0; i < (sizeof(formats) / sizeof(formats[0])); i++) {=0A=
+        hr =3D IWineD3D_CheckDeviceFormat(This->wineD3D,=0A=
+                                        WINED3DADAPTER_DEFAULT,=0A=
+                                        WINED3DDEVTYPE_HAL,=0A=
+                                        d3ddm.Format /* AdapterFormat =
*/,=0A=
+                                        0 /* usage */,=0A=
+                                        WINED3DRTYPE_SURFACE,=0A=
+                                        formats[i]);=0A=
+        if(SUCCEEDED(hr)) {=0A=
+            if(count < outsize) {=0A=
+                Codes[count] =3D formats[i];=0A=
+            }=0A=
+            count++;=0A=
+        }=0A=
+    }=0A=
+    if(NumCodes) {=0A=
+        TRACE("Returning %u FourCC codes\n", count);=0A=
+        *NumCodes =3D count;=0A=
+    }=0A=
 =0A=
     return DD_OK;=0A=
 }=0A=
-- =0A=
1.5.4.5=0A=
=0A=

------=_NextPart_000_0001_01C90123.CA96BF90--




More information about the wine-patches mailing list