Remove hwnd and hdc, so it being store to right struct. Modified: trunk/reactos/lib/ddraw/hal/ddraw_hal.c Modified: trunk/reactos/lib/ddraw/main/ddraw_main.c Modified: trunk/reactos/lib/ddraw/rosdraw.h _____
Modified: trunk/reactos/lib/ddraw/hal/ddraw_hal.c --- trunk/reactos/lib/ddraw/hal/ddraw_hal.c 2005-11-05 14:21:39 UTC (rev 19014) +++ trunk/reactos/lib/ddraw/hal/ddraw_hal.c 2005-11-05 15:05:31 UTC (rev 19015) @@ -19,12 +19,9 @@
This->DirectDrawGlobal.lp16DD = &This->DirectDrawGlobal;
/* get the object */ - if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, This->hdc)) + if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, (HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC )) return DDERR_INVALIDPARAMS; - - BOOL dummy; - DdReenableDirectDrawObject(&This->DirectDrawGlobal, &dummy); - + /* alloc all the space */ This->DirectDrawGlobal.lpDDCBtmp = (LPDDHAL_CALLBACKS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(DDHAL_CALLBACKS)); @@ -267,12 +264,14 @@ This->HalInfo.GetDriverInfo(&DriverInfo);
/* Get the ZPixelFormats */ + /* take off this it until we figout how lpexluisev should be fild in This->DirectDrawGlobal.lpZPixelFormats = (LPDDPIXELFORMAT) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats); DriverInfo.guidInfo = GUID_ZPixelFormats; DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpZPixelFormats; DriverInfo.dwExpectedSize = sizeof(DDPIXELFORMAT); This->HalInfo.GetDriverInfo(&DriverInfo); + */
/* Setup some info from the callbacks we got */ DDHAL_GETAVAILDRIVERMEMORYDATA mem; _____
Modified: trunk/reactos/lib/ddraw/main/ddraw_main.c --- trunk/reactos/lib/ddraw/main/ddraw_main.c 2005-11-05 14:21:39 UTC (rev 19014) +++ trunk/reactos/lib/ddraw/main/ddraw_main.c 2005-11-05 15:05:31 UTC (rev 19015) @@ -21,14 +21,23 @@
This->InitializeDraw = TRUE;
- + /* Setup the lpExclusiveOwner struct in msdn this struct member is undoc + I am using there name to figout which info it should be fild with + My hardware drv does not support call to SetExusive so I can not + debug it see how it should be fild + */ + + This->DirectDrawGlobal.lpExclusiveOwner = &This->ExclusiveOwner; + memset(&This->ExclusiveOwner, 0, sizeof(DDRAWI_DIRECTDRAW_LCL));
- - // get the HDC - This->hdc = GetWindowDC(GetDesktopWindow()); - This->Height = GetDeviceCaps(This->hdc, VERTRES); - This->Width = GetDeviceCaps(This->hdc, HORZRES); - This->Bpp = GetDeviceCaps(This->hdc, BITSPIXEL); + This->DirectDrawGlobal.lpExclusiveOwner->dwProcessId = GetCurrentProcessId(); + This->DirectDrawGlobal.lpExclusiveOwner->hDC = ((ULONG_PTR)GetWindowDC(GetDesktopWindow())); + This->DirectDrawGlobal.lpExclusiveOwner->hWnd = ((ULONG_PTR)GetDesktopWindow()); + This->DirectDrawGlobal.lpExclusiveOwner->lpGbl = &This->DirectDrawGlobal; + + This->Height = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , VERTRES); + This->Width = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , HORZRES); + This->Bpp = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , BITSPIXEL);
// call software first if((ret = Hal_DirectDraw_Initialize (iface)) != DD_OK) @@ -51,12 +60,9 @@ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
// check the parameters - if (This->cooperative_level == cooplevel && This->window == hwnd) + if ((This->cooperative_level == cooplevel) && ((HWND)This->DirectDrawGlobal.lpExclusiveOwner->hWnd == hwnd)) return DD_OK; - - if (This->window) - return DDERR_HWNDALREADYSET; - + if (This->cooperative_level) return DDERR_EXCLUSIVEMODEALREADYSET;
@@ -67,8 +73,8 @@ return DDERR_INVALIDPARAMS;
// set the data - This->window = hwnd; - This->hdc = GetDC(hwnd); + This->DirectDrawGlobal.lpExclusiveOwner->hWnd = (ULONG_PTR) hwnd; + This->DirectDrawGlobal.lpExclusiveOwner->hDC = (ULONG_PTR)GetDC(hwnd); This->cooperative_level = cooplevel;
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE) _____
Modified: trunk/reactos/lib/ddraw/rosdraw.h --- trunk/reactos/lib/ddraw/rosdraw.h 2005-11-05 14:21:39 UTC (rev 19014) +++ trunk/reactos/lib/ddraw/rosdraw.h 2005-11-05 15:05:31 UTC (rev 19015) @@ -14,23 +14,28 @@
typedef struct { + /* Setup the Vtbl COM table */ IDirectDraw7Vtbl* lpVtbl; IDirectDraw4Vtbl* lpVtbl_v4; IDirectDraw2Vtbl* lpVtbl_v2; IDirectDrawVtbl* lpVtbl_v1;
+ /* The main struct that contain all info from the HAL and HEL */ DDRAWI_DIRECTDRAW_GBL DirectDrawGlobal; + + /* ExclusiveOwner */ + DDRAWI_DIRECTDRAW_LCL ExclusiveOwner; + + /* MISC info that will be remove in futuer */ DDHAL_DDMISCELLANEOUSCALLBACKS Misc2Callback; DDHALINFO HalInfo; - - HWND window; - DWORD cooperative_level; - HDC hdc; + + DWORD cooperative_level; int Height, Width, Bpp;
- GUID InGUID; BOOL InitializeDraw;
+ } IDirectDrawImpl;
/******** Surface Object ********/