Module: wine Branch: master Commit: 27113156d96d20296409fcb92839609c8dd7e34a URL: http://source.winehq.org/git/wine.git/?a=commit;h=27113156d96d20296409fcb928...
Author: Stefan Dösinger stefan@codeweavers.com Date: Mon Feb 19 15:24:00 2007 +0100
wined3d: Remove IWineD3DDevice::EnumDisplayModes.
---
dlls/ddraw/ddraw.c | 99 +++++++++++++++---------------------- dlls/wined3d/device.c | 25 ---------- include/wine/wined3d_interface.h | 9 ---- 3 files changed, 40 insertions(+), 93 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 96b30d3..3270e41 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -1136,50 +1136,6 @@ IDirectDrawImpl_GetGDISurface(IDirectDraw7 *iface, }
/***************************************************************************** - * IDirectDrawImpl_EnumDisplayModesCB - * - * Callback function for IDirectDraw7::EnumDisplayModes. Translates - * the wineD3D values to ddraw values and calls the application callback - * - * Params: - * device: The IDirectDraw7 interface to the current device - * With, Height, Pixelformat, Refresh: Enumerated display mode - * context: the context pointer passed to IWineD3DDevice::EnumDisplayModes - * - * Returns: - * The return value from the application callback - * - *****************************************************************************/ -static HRESULT WINAPI -IDirectDrawImpl_EnumDisplayModesCB(IUnknown *pDevice, - UINT Width, - UINT Height, - WINED3DFORMAT Pixelformat, - FLOAT Refresh, - void *context) -{ - DDSURFACEDESC2 callback_sd; - EnumDisplayModesCBS *cbs = (EnumDisplayModesCBS *) context; - - memset(&callback_sd, 0, sizeof(callback_sd)); - callback_sd.dwSize = sizeof(callback_sd); - callback_sd.u4.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT); - - callback_sd.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_PITCH; - if(Refresh > 0.0) - { - callback_sd.dwFlags |= DDSD_REFRESHRATE; - callback_sd.u2.dwRefreshRate = 60.0; - } - - callback_sd.dwHeight = Height; - callback_sd.dwWidth = Width; - - PixelFormat_WineD3DtoDD(&callback_sd.u4.ddpfPixelFormat, Pixelformat); - return cbs->callback(&callback_sd, cbs->context); -} - -/***************************************************************************** * IDirectDraw7::EnumDisplayModes * * Enumerates the supported Display modes. The modes can be filtered with @@ -1204,34 +1160,59 @@ IDirectDrawImpl_EnumDisplayModes(IDirectDraw7 *iface, LPDDENUMMODESCALLBACK2 cb) { ICOM_THIS_FROM(IDirectDrawImpl, IDirectDraw7, iface); - UINT Width = 0, Height = 0; + unsigned int modenum = 0; WINED3DFORMAT pixelformat = WINED3DFMT_UNKNOWN; - EnumDisplayModesCBS cbs; + WINED3DDISPLAYMODE mode; + DDSURFACEDESC2 callback_sd;
TRACE("(%p)->(%p,%p,%p): Relay\n", This, DDSD, Context, cb);
/* This looks sane */ if(!cb) return DDERR_INVALIDPARAMS;
- /* The private callback structure */ - cbs.callback = cb; - cbs.context = Context; - if(DDSD) { - if (DDSD->dwFlags & DDSD_WIDTH) - Width = DDSD->dwWidth; - if (DDSD->dwFlags & DDSD_HEIGHT) - Height = DDSD->dwHeight; if ((DDSD->dwFlags & DDSD_PIXELFORMAT) && (DDSD->u4.ddpfPixelFormat.dwFlags & DDPF_RGB) ) pixelformat = PixelFormat_DD2WineD3D(&DDSD->u4.ddpfPixelFormat); }
- return IWineD3DDevice_EnumDisplayModes(This->wineD3DDevice, - Flags, - Width, Height, pixelformat, - &cbs, - IDirectDrawImpl_EnumDisplayModesCB); + while(IWineD3D_EnumAdapterModes(This->wineD3D, + WINED3DADAPTER_DEFAULT, + pixelformat, + modenum++, + &mode) == WINED3D_OK) { + if(DDSD) + { + if(DDSD->dwFlags & DDSD_WIDTH && mode.Width != DDSD->dwWidth) continue; + if(DDSD->dwFlags & DDSD_HEIGHT && mode.Height != DDSD->dwHeight) continue; + } + + memset(&callback_sd, 0, sizeof(callback_sd)); + callback_sd.dwSize = sizeof(callback_sd); + callback_sd.u4.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT); + + callback_sd.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_PITCH; + if(Flags & DDEDM_REFRESHRATES) + { + callback_sd.dwFlags |= DDSD_REFRESHRATE; + callback_sd.u2.dwRefreshRate = mode.RefreshRate; + } + + callback_sd.dwWidth = mode.Width; + callback_sd.dwHeight = mode.Height; + + PixelFormat_WineD3DtoDD(&callback_sd.u4.ddpfPixelFormat, mode.Format); + + TRACE("Enumerating %dx%d@%d\n", callback_sd.dwWidth, callback_sd.dwHeight, callback_sd.u4.ddpfPixelFormat.u1.dwRGBBitCount); + + if(cb(&callback_sd, Context) == DDENUMRET_CANCEL) + { + TRACE("Application asked to terminate the enumeration\n"); + return DD_OK; + } + } + TRACE("End of enumeration\n"); + return DD_OK; }
/***************************************************************************** diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 2799ffd..3e66075 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1822,30 +1822,6 @@ static void WINAPI IWineD3DDeviceImpl_SetFullscreen(IWineD3DDevice *iface, BOOL This->ddraw_fullscreen = fullscreen; }
-static HRESULT WINAPI IWineD3DDeviceImpl_EnumDisplayModes(IWineD3DDevice *iface, DWORD Flags, UINT Width, UINT Height, WINED3DFORMAT pixelformat, LPVOID context, D3DCB_ENUMDISPLAYMODESCALLBACK callback) { - IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - - DEVMODEW DevModeW; - int i; - const PixelFormatDesc *formatDesc = getFormatDescEntry(pixelformat); - - TRACE("(%p)->(%x,%d,%d,%d,%p,%p)\n", This, Flags, Width, Height, pixelformat, context, callback); - - for (i = 0; EnumDisplaySettingsExW(NULL, i, &DevModeW, 0); i++) { - /* Ignore some modes if a description was passed */ - if ( (Width > 0) && (Width != DevModeW.dmPelsWidth)) continue; - if ( (Height > 0) && (Height != DevModeW.dmPelsHeight)) continue; - if ( (pixelformat != WINED3DFMT_UNKNOWN) && ( formatDesc->bpp != DevModeW.dmBitsPerPel) ) continue; - - TRACE("Enumerating %dx%d@%s\n", DevModeW.dmPelsWidth, DevModeW.dmPelsHeight, debug_d3dformat(pixelformat_for_depth(DevModeW.dmBitsPerPel))); - - if (callback((IUnknown *) This, (UINT) DevModeW.dmPelsWidth, (UINT) DevModeW.dmPelsHeight, pixelformat_for_depth(DevModeW.dmBitsPerPel), 60.0, context) == DDENUMRET_CANCEL) - return WINED3D_OK; - } - - return WINED3D_OK; -} - static HRESULT WINAPI IWineD3DDeviceImpl_SetDisplayMode(IWineD3DDevice *iface, UINT iSwapChain, WINED3DDISPLAYMODE* pMode) { DEVMODEW devmode; IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; @@ -5713,7 +5689,6 @@ const IWineD3DDeviceVtbl IWineD3DDevice_Vtbl = IWineD3DDeviceImpl_Init3D, IWineD3DDeviceImpl_Uninit3D, IWineD3DDeviceImpl_SetFullscreen, - IWineD3DDeviceImpl_EnumDisplayModes, IWineD3DDeviceImpl_EvictManagedResources, IWineD3DDeviceImpl_GetAvailableTextureMem, IWineD3DDeviceImpl_GetBackBuffer, diff --git a/include/wine/wined3d_interface.h b/include/wine/wined3d_interface.h index 998c84c..3783ebc 100644 --- a/include/wine/wined3d_interface.h +++ b/include/wine/wined3d_interface.h @@ -233,13 +233,6 @@ typedef HRESULT WINAPI (*D3DCB_CREATEADDITIONALSWAPCHAIN) (IUnknown *pDevice, struct IWineD3DSwapChain **pSwapChain );
-typedef HRESULT WINAPI (*D3DCB_ENUMDISPLAYMODESCALLBACK) (IUnknown *pDevice, - UINT Width, - UINT Height, - WINED3DFORMAT Pixelformat, - FLOAT Refresh, - LPVOID context); - /***************************************************************************** * Callback functions for custom implicit object destruction. */ @@ -363,7 +356,6 @@ DECLARE_INTERFACE_(IWineD3DDevice,IWineD3DBase) STDMETHOD(Init3D)(THIS_ WINED3DPRESENT_PARAMETERS* pPresentationParameters, D3DCB_CREATEADDITIONALSWAPCHAIN D3DCB_CreateAdditionalSwapChain); STDMETHOD(Uninit3D)(THIS, D3DCB_DESTROYSURFACEFN pFn, D3DCB_DESTROYSWAPCHAINFN pFn2); STDMETHOD_(void, SetFullscreen)(THIS_ BOOL fullscreen); - STDMETHOD(EnumDisplayModes)(THIS_ DWORD Flags, UINT Width, UINT Height, WINED3DFORMAT Format, void *context, D3DCB_ENUMDISPLAYMODESCALLBACK cb) PURE; STDMETHOD(EvictManagedResources)(THIS) PURE; STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE; STDMETHOD(GetBackBuffer)(THIS_ UINT iSwapChain, UINT BackBuffer, WINED3DBACKBUFFER_TYPE, struct IWineD3DSurface** ppBackBuffer) PURE; @@ -500,7 +492,6 @@ DECLARE_INTERFACE_(IWineD3DDevice,IWineD3DBase) #define IWineD3DDevice_Init3D(p, a, b) (p)->lpVtbl->Init3D(p, a, b) #define IWineD3DDevice_Uninit3D(p, a, b) (p)->lpVtbl->Uninit3D(p, a, b) #define IWineD3DDevice_SetFullscreen(p, a) (p)->lpVtbl->SetFullscreen(p, a) -#define IWineD3DDevice_EnumDisplayModes(p,a,b,c,d,e,f) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d,e,f) #define IWineD3DDevice_EvictManagedResources(p) (p)->lpVtbl->EvictManagedResources(p) #define IWineD3DDevice_GetAvailableTextureMem(p) (p)->lpVtbl->GetAvailableTextureMem(p) #define IWineD3DDevice_GetBackBuffer(p,a,b,c,d) (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)