mirror of
https://github.com/reactos/reactos.git
synced 2024-07-11 15:15:27 +00:00
DirectDraw_EnumDisplayModes
base on wine implenetins taking wine code and rewrite some part. it is not complete but it does the work. DirectDraw_SetDisplayMode remove the freq flag we ignore it for now. for EnumDisplayModes report modes that are being support for the graphic card. but the monitor does not support it svn path=/trunk/; revision=21518
This commit is contained in:
parent
8c7d161f2a
commit
4c2d5ebbbe
|
@ -12,6 +12,7 @@
|
|||
<library>d3d8thk</library>
|
||||
<library>dxguid</library>
|
||||
<library>ole32</library>
|
||||
<library>user32</library>
|
||||
|
||||
<file>ddraw.rc</file>
|
||||
<file>main.c</file>
|
||||
|
|
|
@ -10,6 +10,26 @@
|
|||
|
||||
#include "rosdraw.h"
|
||||
|
||||
static const DDPIXELFORMAT pixelformats[] =
|
||||
{
|
||||
/* 8bpp paletted */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB|DDPF_PALETTEINDEXED8, 0, { 8 } },
|
||||
/* 15bpp 5/5/5 */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 16 }, { 0x7C00 }, { 0x3E0 },
|
||||
{ 0x1F } },
|
||||
/* 16bpp 5/6/5 */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 16 }, { 0xF800 }, { 0x7E0 },
|
||||
{ 0x1F } },
|
||||
/* 24bpp 8/8/8 */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 24 }, { 0xFF0000 },
|
||||
{ 0x00FF00 }, { 0x0000FF } },
|
||||
/* 32bpp 8/8/8 */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 32 }, { 0xFF0000 },
|
||||
{ 0x00FF00 }, { 0x0000FF } }
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* IMPLEMENT
|
||||
* Status this api is finish and is 100% correct
|
||||
|
@ -18,6 +38,8 @@ HRESULT
|
|||
WINAPI
|
||||
Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (iface==NULL)
|
||||
|
@ -60,6 +82,8 @@ ULONG
|
|||
WINAPI
|
||||
Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
ULONG ref=0;
|
||||
|
||||
|
@ -80,6 +104,8 @@ ULONG
|
|||
WINAPI
|
||||
Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
ULONG ref=0;
|
||||
|
||||
|
@ -118,6 +144,8 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
|||
// for now we always asume it is the active dirver that should be use.
|
||||
// - allow more Flags
|
||||
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
// check the parameters
|
||||
|
@ -155,6 +183,8 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
|||
HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight,
|
||||
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
BOOL dummy = TRUE;
|
||||
DWORD ret;
|
||||
|
@ -171,13 +201,14 @@ HRESULT WINAPI Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidt
|
|||
/* Check use the Hal or Hel for SetMode */
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETMODE)
|
||||
{
|
||||
ret = Hal_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
|
||||
ret = Hal_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = Hel_DirectDraw_SetDisplayMode(iface, dwWidth, dwHeight, dwBPP, dwRefreshRate, dwFlags);
|
||||
}
|
||||
|
||||
|
||||
if (ret == DD_OK)
|
||||
{
|
||||
DdReenableDirectDrawObject(&This->mDDrawGlobal, &dummy);
|
||||
|
@ -200,6 +231,8 @@ Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface,
|
|||
REFIID id,
|
||||
LPVOID *obj)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (IsEqualGUID(&IID_IDirectDraw7, id))
|
||||
|
@ -231,6 +264,8 @@ Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface,
|
|||
HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
|
||||
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
HRESULT ret;
|
||||
DxSurf *surf;
|
||||
|
||||
|
@ -298,6 +333,8 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDIRECTDRAWCLIPPER *ppClipper, IUnknown *pUnkOuter)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (pUnkOuter!=NULL)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
|
@ -320,12 +357,16 @@ HRESULT WINAPI Main_DirectDraw_CreateClipper(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
|||
HRESULT WINAPI DirectDrawCreateClipper (DWORD dwFlags,
|
||||
LPDIRECTDRAWCLIPPER* lplpDDClipper, LPUNKNOWN pUnkOuter)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
return Main_DirectDraw_CreateClipper(NULL, dwFlags, lplpDDClipper, pUnkOuter);
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_CreatePalette(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPPALETTEENTRY palent, LPDIRECTDRAWPALETTE* ppPalette, LPUNKNOWN pUnkOuter)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
if (pUnkOuter!=NULL)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
|
@ -359,6 +400,8 @@ HRESULT WINAPI Main_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 iface)
|
|||
HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
|
||||
LPDDCAPS pHELCaps)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DDSCAPS2 ddscaps;
|
||||
DWORD status = DD_FALSE;
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
@ -389,7 +432,9 @@ HRESULT WINAPI Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps
|
|||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD)
|
||||
{
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
||||
if (pDDSD == NULL)
|
||||
|
@ -428,6 +473,8 @@ HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
HANDLE h)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)
|
||||
|
@ -441,6 +488,8 @@ HRESULT WINAPI Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD d
|
|||
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
|
||||
LPDWORD total, LPDWORD free)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
|
||||
|
@ -454,6 +503,8 @@ HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS
|
|||
|
||||
HRESULT WINAPI Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD freq)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
|
||||
|
||||
if (freq == NULL)
|
||||
|
@ -467,6 +518,8 @@ HRESULT WINAPI Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD f
|
|||
|
||||
HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_GETSCANLINE)
|
||||
|
@ -479,6 +532,8 @@ HRESULT WINAPI Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScan
|
|||
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
return DD_OK;
|
||||
}
|
||||
|
@ -487,42 +542,150 @@ HRESULT WINAPI Main_DirectDraw_RestoreDisplayMode(LPDIRECTDRAW7 iface)
|
|||
|
||||
HRESULT WINAPI Main_DirectDraw_Compact(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_DuplicateSurface(LPDIRECTDRAW7 iface, LPDIRECTDRAWSURFACE7 src,
|
||||
LPDIRECTDRAWSURFACE7* dst)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 pDDSD, LPVOID context, LPDDENUMMODESCALLBACK2 callback)
|
||||
{
|
||||
DX_STUB;
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||
DDSURFACEDESC2 desc_callback;
|
||||
DEVMODE DevMode;
|
||||
int iMode=0;
|
||||
|
||||
if (pDDSD!=NULL)
|
||||
{
|
||||
// FIXME fill in pDDSD
|
||||
}
|
||||
|
||||
RtlZeroMemory(&desc_callback, sizeof(DDSURFACEDESC2));
|
||||
desc_callback.dwSize = sizeof(DDSURFACEDESC2);
|
||||
|
||||
desc_callback.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_CAPS | DDSD_PITCH;
|
||||
|
||||
if (dwFlags & DDEDM_REFRESHRATES)
|
||||
{
|
||||
desc_callback.dwFlags |= DDSD_REFRESHRATE;
|
||||
desc_callback.dwRefreshRate = This->mDDrawGlobal.dwMonitorFrequency;
|
||||
}
|
||||
|
||||
|
||||
/// FIXME check if the mode are suppretd before sending it back
|
||||
|
||||
while (EnumDisplaySettingsEx(NULL, iMode, &DevMode, 0))
|
||||
{
|
||||
|
||||
if (pDDSD)
|
||||
{
|
||||
if ((pDDSD->dwFlags & DDSD_WIDTH) && (pDDSD->dwWidth != DevMode.dmPelsWidth))
|
||||
continue;
|
||||
if ((pDDSD->dwFlags & DDSD_HEIGHT) && (pDDSD->dwHeight != DevMode.dmPelsHeight))
|
||||
continue;
|
||||
if ((pDDSD->dwFlags & DDSD_PIXELFORMAT) && (pDDSD->ddpfPixelFormat.dwFlags & DDPF_RGB) &&
|
||||
(pDDSD->ddpfPixelFormat.dwRGBBitCount != DevMode.dmBitsPerPel))
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
desc_callback.dwHeight = DevMode.dmPelsHeight;
|
||||
desc_callback.dwWidth = DevMode.dmPelsWidth;
|
||||
|
||||
if (DevMode.dmFields & DM_DISPLAYFREQUENCY)
|
||||
{
|
||||
desc_callback.dwRefreshRate = DevMode.dmDisplayFrequency;
|
||||
}
|
||||
|
||||
switch(DevMode.dmBitsPerPel)
|
||||
{
|
||||
case 8:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[0],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
case 15:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[1],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
case 16:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[2],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
|
||||
case 24:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[3],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
case 32:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[3],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (desc_callback.ddpfPixelFormat.dwRGBBitCount==15)
|
||||
{
|
||||
desc_callback.lPitch = DevMode.dmPelsWidth + (8 - ( DevMode.dmPelsWidth % 8)) % 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
desc_callback.lPitch = DevMode.dmPelsWidth * (desc_callback.ddpfPixelFormat.dwRGBBitCount / 8);
|
||||
desc_callback.lPitch = desc_callback.lPitch + (8 - (desc_callback.lPitch % 8)) % 8;
|
||||
}
|
||||
|
||||
desc_callback.ddsCaps.dwCaps = 0;
|
||||
if (desc_callback.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8)
|
||||
{
|
||||
desc_callback.ddsCaps.dwCaps |= DDSCAPS_PALETTE;
|
||||
}
|
||||
|
||||
|
||||
if (callback(&desc_callback, context) == DDENUMRET_CANCEL)
|
||||
{
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
iMode++;
|
||||
}
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EnumSurfaces(LPDIRECTDRAW7 iface, DWORD dwFlags,
|
||||
LPDDSURFACEDESC2 lpDDSD2, LPVOID context,
|
||||
LPDDENUMSURFACESCALLBACK7 callback)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetFourCCCodes(LPDIRECTDRAW7 iface, LPDWORD pNumCodes, LPDWORD pCodes)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetGDISurface(LPDIRECTDRAW7 iface,
|
||||
LPDIRECTDRAWSURFACE7 *lplpGDIDDSSurface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOOL status)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -531,33 +694,39 @@ HRESULT WINAPI Main_DirectDraw_GetVerticalBlankStatus(LPDIRECTDRAW7 iface, LPBOO
|
|||
HRESULT WINAPI Main_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC hdc,
|
||||
LPDIRECTDRAWSURFACE7 *lpDDS)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_RestoreAllSurfaces(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_TestCooperativeLevel(LPDIRECTDRAW7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_GetDeviceIdentifier(LPDIRECTDRAW7 iface,
|
||||
LPDDDEVICEIDENTIFIER2 pDDDI, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_StartModeTest(LPDIRECTDRAW7 iface, LPSIZE pModes,
|
||||
DWORD dwNumModes, DWORD dwFlags)
|
||||
{
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DirectDraw_EvaluateMode(LPDIRECTDRAW7 iface,DWORD a,DWORD* b)
|
||||
{
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,11 +14,14 @@
|
|||
|
||||
HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAW pDD, LPDDSURFACEDESC2 pDDSD2)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
return DDERR_ALREADYINITIALIZED;
|
||||
}
|
||||
|
||||
ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
return InterlockedIncrement((PLONG)&This->owner->mDDrawGlobal.dsList->dwIntRefCnt);
|
||||
|
@ -26,6 +29,8 @@ ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface)
|
|||
|
||||
ULONG WINAPI Main_DDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
ULONG ref = InterlockedDecrement((PLONG)&This->owner->mDDrawGlobal.dsList->dwIntRefCnt);
|
||||
|
||||
|
@ -41,12 +46,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7 iface, REFIID riid,
|
||||
LPVOID* ppObj)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
|
||||
LPDIRECTDRAWSURFACE7 src, LPRECT rsrc, DWORD dwFlags, LPDDBLTFX lpbltfx)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
|
||||
|
@ -62,6 +71,8 @@ HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
|
|||
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
||||
LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
if (This->owner->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_CREATESURFACE)
|
||||
|
@ -74,6 +85,8 @@ HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
|||
|
||||
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -81,6 +94,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWSURFACE7 pAttach)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||
|
||||
|
||||
|
@ -100,6 +115,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPRECT pRect)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -108,12 +125,16 @@ Main_DDrawSurface_BltFast(LPDIRECTDRAWSURFACE7 iface, DWORD dstx,
|
|||
DWORD dsty, LPDIRECTDRAWSURFACE7 src,
|
||||
LPRECT rsrc, DWORD trans)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_Restore(LPDIRECTDRAWSURFACE7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -123,12 +144,16 @@ Main_DDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7 iface,
|
|||
LPDDBLTBATCH pBatch, DWORD dwCount,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -137,6 +162,8 @@ Main_DDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
|||
DWORD dwFlags,
|
||||
LPDIRECTDRAWSURFACE7 pAttach)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -145,6 +172,8 @@ Main_DDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
|
|||
LPVOID context,
|
||||
LPDDENUMSURFACESCALLBACK7 cb)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -153,6 +182,8 @@ Main_DDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7 iface,
|
|||
DWORD dwFlags, LPVOID context,
|
||||
LPDDENUMSURFACESCALLBACK7 cb)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -160,12 +191,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWSURFACE7 override, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -174,18 +209,24 @@ Main_DDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
|
|||
LPDDSCAPS2 pCaps,
|
||||
LPDIRECTDRAWSURFACE7* ppSurface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface, LPDDSCAPS2 pCaps)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This;
|
||||
|
||||
if (iface == NULL)
|
||||
|
@ -210,6 +251,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER* ppClipper)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -217,12 +260,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
|
||||
LPDDCOLORKEY pCKey)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This;
|
||||
|
||||
if (iface == NULL)
|
||||
|
@ -258,17 +305,23 @@ Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
|||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7 iface, LPVOID* pDD)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7 iface, LPDWORD pdwMaxLOD)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -276,12 +329,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPLONG pX, LPLONG pY)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWPALETTE* ppPalette)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -289,6 +346,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDDPIXELFORMAT pDDPixelFormat)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -296,6 +355,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDWORD pdwPriority)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -304,6 +365,8 @@ Main_DDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7 iface,
|
|||
REFGUID tag, LPVOID pBuffer,
|
||||
LPDWORD pcbBufferSize)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -311,6 +374,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDDSURFACEDESC2 pDDSD)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -318,30 +383,40 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDWORD pValue)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_IsLost(LPDIRECTDRAWSURFACE7 iface)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_PageLock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
IDirectDrawSurfaceImpl* This;
|
||||
|
||||
if (iface == NULL)
|
||||
|
@ -372,6 +447,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWCLIPPER pDDClipper)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -379,12 +456,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface,
|
||||
DWORD dwFlags, LPDDCOLORKEY pCKey)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI
|
||||
Main_DDrawSurface_SetLOD (LPDIRECTDRAWSURFACE7 iface, DWORD dwMaxLOD)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -392,6 +473,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetOverlayPosition (LPDIRECTDRAWSURFACE7 iface,
|
||||
LONG X, LONG Y)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -399,6 +482,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7 iface,
|
||||
LPDIRECTDRAWPALETTE pPalette)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -406,6 +491,8 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_SetPriority (LPDIRECTDRAWSURFACE7 iface,
|
||||
DWORD dwPriority)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -414,6 +501,8 @@ Main_DDrawSurface_SetPrivateData (LPDIRECTDRAWSURFACE7 iface,
|
|||
REFGUID tag, LPVOID pData,
|
||||
DWORD cbSize, DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -424,6 +513,8 @@ Main_DDrawSurface_UpdateOverlay (LPDIRECTDRAWSURFACE7 iface,
|
|||
LPRECT pDstRect, DWORD dwFlags,
|
||||
LPDDOVERLAYFX pFX)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
@ -432,12 +523,16 @@ HRESULT WINAPI
|
|||
Main_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
HRESULT WINAPI Main_DDrawSurface_UpdateOverlayZOrder (LPDIRECTDRAWSURFACE7 iface,
|
||||
DWORD dwFlags, LPDIRECTDRAWSURFACE7 pDDSRef)
|
||||
{
|
||||
DX_WINDBG_trace();
|
||||
|
||||
DX_STUB;
|
||||
}
|
||||
|
||||
|
|
|
@ -192,4 +192,24 @@ HRESULT Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURF
|
|||
firstcall = FALSE; \
|
||||
}
|
||||
|
||||
#define DX_WINDBG_trace() \
|
||||
static BOOL firstcallx = TRUE; \
|
||||
if (firstcallx) \
|
||||
{ \
|
||||
char buffer[1024]; \
|
||||
sprintf ( buffer, "Enter Function %s (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
|
||||
OutputDebugStringA(buffer); \
|
||||
firstcallx = FALSE; \
|
||||
}
|
||||
|
||||
#define DX_WINDBG_trace_res(width,height,bpp) \
|
||||
static BOOL firstcallxx = TRUE; \
|
||||
if (firstcallxx) \
|
||||
{ \
|
||||
char buffer[1024]; \
|
||||
sprintf ( buffer, "Setmode have been req width=%d, height=%d bpp=%d\n",width,height,bpp); \
|
||||
OutputDebugStringA(buffer); \
|
||||
firstcallxx = FALSE; \
|
||||
}
|
||||
|
||||
#endif /* __DDRAW_PRIVATE */
|
||||
|
|
|
@ -72,21 +72,26 @@ HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD
|
|||
mode.dmPelsWidth = dwWidth;
|
||||
mode.dmPelsHeight = dwHeight;
|
||||
mode.dmBitsPerPel = dwBPP;
|
||||
mode.dmDisplayFrequency = dwRefreshRate;
|
||||
|
||||
//mode.dmDisplayFrequency = dwRefreshRate;
|
||||
mode.dmFields = 0;
|
||||
|
||||
DX_STUB_str("in hel");
|
||||
|
||||
if(dwWidth)
|
||||
mode.dmFields |= DM_PELSWIDTH;
|
||||
if(dwHeight)
|
||||
mode.dmFields |= DM_PELSHEIGHT;
|
||||
if(dwBPP)
|
||||
mode.dmFields |= DM_BITSPERPEL;
|
||||
/*
|
||||
if(dwRefreshRate)
|
||||
mode.dmFields |= DM_DISPLAYFREQUENCY;
|
||||
|
||||
*/
|
||||
if (ChangeDisplaySettings(&mode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
|
||||
return DDERR_UNSUPPORTEDMODE;
|
||||
|
||||
|
||||
// TODO: reactivate ddraw object, maximize window, set it in foreground
|
||||
// and set excluive mode (if implemented by the driver)
|
||||
|
||||
|
|
Loading…
Reference in a new issue