start add hardware interface to hal
we now map the hal to directdraw
follow api are implement in the ddraw for hal
but all hal api are not implement in the kernel
if you got louky it maby working with nvida driver now.
untested yet.
Modified: trunk/reactos/lib/ddraw/ddraw_hal.c
_____
Modified: trunk/reactos/lib/ddraw/ddraw_hal.c
--- trunk/reactos/lib/ddraw/ddraw_hal.c 2005-03-20 17:22:24 UTC (rev
14224)
+++ trunk/reactos/lib/ddraw/ddraw_hal.c 2005-03-20 17:24:11 UTC (rev
14225)
@@ -37,9 +37,9 @@
This->create_primary = HAL_DirectDraw_create_primary;
This->create_backbuffer = HAL_DirectDraw_create_backbuffer;
- This->create_texture = HAL_DirectDraw_create_texture;
+ This->create_texture = HAL_DirectDraw_create_texture;
- ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);
+ // ICOM_INIT_INTERFACE(This, IDirectDraw7, HAL_DirectDraw_VTable);
return S_OK;
}
@@ -290,7 +290,8 @@
{
HRESULT hr;
- IDirectDrawImpl* This;
+ IDirectDrawImpl* This;
+ HDC desktop;
/*
This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
@@ -312,9 +313,15 @@
hr = HAL_DirectDraw_Construct(This, ex);
if (FAILED(hr))
HeapFree(GetProcessHeap(), 0, This);
- else
- *pIface = ICOM_INTERFACE(This, IDirectDraw7);
+ else *pIface = ICOM_INTERFACE(This, IDirectDraw7);
+ /* create a scaner that check which driver we should get the HDC
from */
+ /* for now we always asume it is the active dirver that should
be use. */
+
+ desktop = GetWindowDC(GetDesktopWindow());
+ *pIface = OsThunkDdCreateDirectDrawObject(desktop);
+ if (pIface == NULL) hr == DDERR_NODIRECTDRAWHW;
+
return hr;
}