diff --git a/reactos/dll/directx/ddraw/ddraw.rbuild b/reactos/dll/directx/ddraw/ddraw.rbuild
index fde3e602ecd..29ed5af929e 100644
--- a/reactos/dll/directx/ddraw/ddraw.rbuild
+++ b/reactos/dll/directx/ddraw/ddraw.rbuild
@@ -12,6 +12,7 @@
d3d8thk
dxguid
ole32
+ user32
ddraw.rc
main.c
diff --git a/reactos/dll/directx/ddraw/main/ddraw_main.c b/reactos/dll/directx/ddraw/main/ddraw_main.c
index 5b14b73941f..481f88d18db 100644
--- a/reactos/dll/directx/ddraw/main/ddraw_main.c
+++ b/reactos/dll/directx/ddraw/main/ddraw_main.c
@@ -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;
}
diff --git a/reactos/dll/directx/ddraw/main/surface_main.c b/reactos/dll/directx/ddraw/main/surface_main.c
index 48540cbf2b5..aa464433f11 100644
--- a/reactos/dll/directx/ddraw/main/surface_main.c
+++ b/reactos/dll/directx/ddraw/main/surface_main.c
@@ -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;
}
diff --git a/reactos/dll/directx/ddraw/rosdraw.h b/reactos/dll/directx/ddraw/rosdraw.h
index 2973c76be14..314aeb74f6c 100644
--- a/reactos/dll/directx/ddraw/rosdraw.h
+++ b/reactos/dll/directx/ddraw/rosdraw.h
@@ -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 */
diff --git a/reactos/dll/directx/ddraw/soft/ddraw_hel.c b/reactos/dll/directx/ddraw/soft/ddraw_hel.c
index e8dabbd1d6d..fb1804ff565 100644
--- a/reactos/dll/directx/ddraw/soft/ddraw_hel.c
+++ b/reactos/dll/directx/ddraw/soft/ddraw_hel.c
@@ -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)