mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
Remove hwnd and hdc, so it being store to right struct.
svn path=/trunk/; revision=19015
This commit is contained in:
parent
0e95797fc0
commit
0102313dcb
3 changed files with 34 additions and 24 deletions
|
@ -19,12 +19,9 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
||||||
This->DirectDrawGlobal.lp16DD = &This->DirectDrawGlobal;
|
This->DirectDrawGlobal.lp16DD = &This->DirectDrawGlobal;
|
||||||
|
|
||||||
/* get the object */
|
/* get the object */
|
||||||
if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, This->hdc))
|
if(!DdCreateDirectDrawObject (&This->DirectDrawGlobal, (HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC ))
|
||||||
return DDERR_INVALIDPARAMS;
|
return DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
BOOL dummy;
|
|
||||||
DdReenableDirectDrawObject(&This->DirectDrawGlobal, &dummy);
|
|
||||||
|
|
||||||
/* alloc all the space */
|
/* alloc all the space */
|
||||||
This->DirectDrawGlobal.lpDDCBtmp = (LPDDHAL_CALLBACKS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
This->DirectDrawGlobal.lpDDCBtmp = (LPDDHAL_CALLBACKS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||||
sizeof(DDHAL_CALLBACKS));
|
sizeof(DDHAL_CALLBACKS));
|
||||||
|
@ -267,12 +264,14 @@ HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
||||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||||
|
|
||||||
/* Get the ZPixelFormats */
|
/* 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,
|
This->DirectDrawGlobal.lpZPixelFormats = (LPDDPIXELFORMAT) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||||
sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats);
|
sizeof(DDPIXELFORMAT) * This->DirectDrawGlobal.dwNumZPixelFormats);
|
||||||
DriverInfo.guidInfo = GUID_ZPixelFormats;
|
DriverInfo.guidInfo = GUID_ZPixelFormats;
|
||||||
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpZPixelFormats;
|
DriverInfo.lpvData = (PVOID)This->DirectDrawGlobal.lpZPixelFormats;
|
||||||
DriverInfo.dwExpectedSize = sizeof(DDPIXELFORMAT);
|
DriverInfo.dwExpectedSize = sizeof(DDPIXELFORMAT);
|
||||||
This->HalInfo.GetDriverInfo(&DriverInfo);
|
This->HalInfo.GetDriverInfo(&DriverInfo);
|
||||||
|
*/
|
||||||
|
|
||||||
/* Setup some info from the callbacks we got */
|
/* Setup some info from the callbacks we got */
|
||||||
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
|
||||||
|
|
|
@ -21,14 +21,23 @@ HRESULT WINAPI Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID)
|
||||||
|
|
||||||
This->InitializeDraw = TRUE;
|
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));
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
// get the HDC
|
This->Height = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , VERTRES);
|
||||||
This->hdc = GetWindowDC(GetDesktopWindow());
|
This->Width = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , HORZRES);
|
||||||
This->Height = GetDeviceCaps(This->hdc, VERTRES);
|
This->Bpp = GetDeviceCaps((HDC)This->DirectDrawGlobal.lpExclusiveOwner->hDC , BITSPIXEL);
|
||||||
This->Width = GetDeviceCaps(This->hdc, HORZRES);
|
|
||||||
This->Bpp = GetDeviceCaps(This->hdc, BITSPIXEL);
|
|
||||||
|
|
||||||
// call software first
|
// call software first
|
||||||
if((ret = Hal_DirectDraw_Initialize (iface)) != DD_OK)
|
if((ret = Hal_DirectDraw_Initialize (iface)) != DD_OK)
|
||||||
|
@ -51,12 +60,9 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
||||||
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
|
||||||
|
|
||||||
// check the parameters
|
// 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;
|
return DD_OK;
|
||||||
|
|
||||||
if (This->window)
|
|
||||||
return DDERR_HWNDALREADYSET;
|
|
||||||
|
|
||||||
if (This->cooperative_level)
|
if (This->cooperative_level)
|
||||||
return DDERR_EXCLUSIVEMODEALREADYSET;
|
return DDERR_EXCLUSIVEMODEALREADYSET;
|
||||||
|
|
||||||
|
@ -67,8 +73,8 @@ HRESULT WINAPI Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hw
|
||||||
return DDERR_INVALIDPARAMS;
|
return DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
// set the data
|
// set the data
|
||||||
This->window = hwnd;
|
This->DirectDrawGlobal.lpExclusiveOwner->hWnd = (ULONG_PTR) hwnd;
|
||||||
This->hdc = GetDC(hwnd);
|
This->DirectDrawGlobal.lpExclusiveOwner->hDC = (ULONG_PTR)GetDC(hwnd);
|
||||||
This->cooperative_level = cooplevel;
|
This->cooperative_level = cooplevel;
|
||||||
|
|
||||||
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE)
|
if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_SETEXCLUSIVEMODE)
|
||||||
|
|
|
@ -14,23 +14,28 @@
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
/* Setup the Vtbl COM table */
|
||||||
IDirectDraw7Vtbl* lpVtbl;
|
IDirectDraw7Vtbl* lpVtbl;
|
||||||
IDirectDraw4Vtbl* lpVtbl_v4;
|
IDirectDraw4Vtbl* lpVtbl_v4;
|
||||||
IDirectDraw2Vtbl* lpVtbl_v2;
|
IDirectDraw2Vtbl* lpVtbl_v2;
|
||||||
IDirectDrawVtbl* lpVtbl_v1;
|
IDirectDrawVtbl* lpVtbl_v1;
|
||||||
|
|
||||||
|
/* The main struct that contain all info from the HAL and HEL */
|
||||||
DDRAWI_DIRECTDRAW_GBL DirectDrawGlobal;
|
DDRAWI_DIRECTDRAW_GBL DirectDrawGlobal;
|
||||||
|
|
||||||
|
/* ExclusiveOwner */
|
||||||
|
DDRAWI_DIRECTDRAW_LCL ExclusiveOwner;
|
||||||
|
|
||||||
|
/* MISC info that will be remove in futuer */
|
||||||
DDHAL_DDMISCELLANEOUSCALLBACKS Misc2Callback;
|
DDHAL_DDMISCELLANEOUSCALLBACKS Misc2Callback;
|
||||||
DDHALINFO HalInfo;
|
DDHALINFO HalInfo;
|
||||||
|
|
||||||
HWND window;
|
|
||||||
DWORD cooperative_level;
|
DWORD cooperative_level;
|
||||||
HDC hdc;
|
|
||||||
int Height, Width, Bpp;
|
int Height, Width, Bpp;
|
||||||
|
|
||||||
GUID InGUID;
|
|
||||||
BOOL InitializeDraw;
|
BOOL InitializeDraw;
|
||||||
|
|
||||||
|
|
||||||
} IDirectDrawImpl;
|
} IDirectDrawImpl;
|
||||||
|
|
||||||
/******** Surface Object ********/
|
/******** Surface Object ********/
|
||||||
|
|
Loading…
Reference in a new issue