Implement Hal GetAvailableVidMem and is it working in windows
Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
Modified: trunk/reactos/lib/ddraw/main/ddraw.c
Modified: trunk/reactos/lib/ddraw/rosdraw.h
Modified: trunk/reactos/lib/ddraw/soft/ddraw.c
_____
Modified: trunk/reactos/lib/ddraw/hal/ddraw.c
--- trunk/reactos/lib/ddraw/hal/ddraw.c 2005-10-29 23:40:05 UTC (rev
18863)
+++ trunk/reactos/lib/ddraw/hal/ddraw.c 2005-10-30 01:06:56 UTC (rev
18864)
@@ -354,3 +354,33 @@
if(This->DirectDrawGlobal.lpD3DGlobalDriverData)
HeapFree(GetProcessHeap(), 0,
(PVOID)This->DirectDrawGlobal.lpD3DGlobalDriverData);
}
+
+
+HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface,
LPDDSCAPS2 ddscaps,
+ LPDWORD total, LPDWORD free)
+{
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DDHAL_GETAVAILDRIVERMEMORYDATA mem;
+
+ if
(!(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags &
DDHAL_MISCCB32_GETAVAILDRIVERMEMORY))
+ {
+ return DDERR_NODRIVERSUPPORT;
+ }
+
+ mem.lpDD = &This->DirectDrawGlobal;
+ if
(This->DirectDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.GetAvailDriverMemo
ry(&mem) != DDHAL_DRIVER_HANDLED)
+ {
+ return DDERR_NODRIVERSUPPORT;
+ }
+
+
+ ddscaps->dwCaps = mem.DDSCaps.dwCaps;
+ ddscaps->dwCaps2 = mem.ddsCapsEx.dwCaps2;
+ ddscaps->dwCaps3 = mem.ddsCapsEx.dwCaps3;
+ ddscaps->dwCaps4 = mem.ddsCapsEx.dwCaps4;
+ *total = mem.dwTotal;
+ *free = mem.dwFree;
+
+ return mem.ddRVal;
+}
_____
Modified: trunk/reactos/lib/ddraw/main/ddraw.c
--- trunk/reactos/lib/ddraw/main/ddraw.c 2005-10-29 23:40:05 UTC
(rev 18863)
+++ trunk/reactos/lib/ddraw/main/ddraw.c 2005-10-30 01:06:56 UTC
(rev 18864)
@@ -352,7 +352,8 @@
DDCOLORKEY ddckCKSrcOverlay;
DDCOLORKEY ddckCKSrcBlt;
*/
-
+
+
RtlCopyMemory(&pDDSD->ddpfPixelFormat,&This->DirectDrawGlobal.vmiData.dd
pfDisplay,sizeof(DDPIXELFORMAT));
RtlCopyMemory(&pDDSD->ddsCaps,&This->DirectDrawGlobal.ddCaps,sizeof(DDCO
RECAPS));
@@ -412,9 +413,18 @@
HRESULT WINAPI Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface,
LPDDSCAPS2 ddscaps,
LPDWORD total, LPDWORD free)
-{
-
- DX_STUB;
+{
+ DWORD ret;
+
+ if((ret = Hal_DirectDraw_GetAvailableVidMem
(iface,ddscaps,total,free)) == DD_OK)
+ return ret;
+
+ if((ret = Hel_DirectDraw_GetAvailableVidMem
(iface,ddscaps,total,free)) == DD_OK)
+ return ret;
+
+
+ return DDERR_NOTINITIALIZED;
+
}
HRESULT WINAPI Main_DirectDraw_GetSurfaceFromDC(LPDIRECTDRAW7 iface, HDC
hdc,
_____
Modified: trunk/reactos/lib/ddraw/rosdraw.h
--- trunk/reactos/lib/ddraw/rosdraw.h 2005-10-29 23:40:05 UTC (rev
18863)
+++ trunk/reactos/lib/ddraw/rosdraw.h 2005-10-30 01:06:56 UTC (rev
18864)
@@ -88,10 +88,18 @@
HRESULT Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface);
VOID Hal_DirectDraw_Release (LPDIRECTDRAW7 iface);
+HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface,
LPDDSCAPS2 ddscaps,
+ LPDWORD total, LPDWORD free);
+
+
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface);
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface);
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 iface);
+HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface,
LPDDSCAPS2 ddscaps,
+ LPDWORD total, LPDWORD free);
+
+
/*********** Macros ***********/
#define DX_STUB \
_____
Modified: trunk/reactos/lib/ddraw/soft/ddraw.c
--- trunk/reactos/lib/ddraw/soft/ddraw.c 2005-10-29 23:40:05 UTC
(rev 18863)
+++ trunk/reactos/lib/ddraw/soft/ddraw.c 2005-10-30 01:06:56 UTC
(rev 18864)
@@ -24,3 +24,10 @@
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 iface)
{
}
+
+
+HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface,
LPDDSCAPS2 ddscaps,
+ LPDWORD total, LPDWORD free)
+{
+ DX_STUB;
+}