[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