Author: khornicek Date: Sat Nov 29 06:58:12 2008 New Revision: 37727
URL: http://svn.reactos.org/svn/reactos?rev=37727&view=rev Log: - reshuffle the code a bit, fix formatting, no actual code change
Modified: branches/reactx/reactos/dll/win32/gdi32/misc/gdientryhelgl.c
Modified: branches/reactx/reactos/dll/win32/gdi32/misc/gdientryhelgl.c URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/win32/gdi32/m... ============================================================================== --- branches/reactx/reactos/dll/win32/gdi32/misc/gdientryhelgl.c [iso-8859-1] (original) +++ branches/reactx/reactos/dll/win32/gdi32/misc/gdientryhelgl.c [iso-8859-1] Sat Nov 29 06:58:12 2008 @@ -29,55 +29,15 @@ #include "wine/config.h" #include "wine/wined3d_interface.h"
+ + +/* DATA **********************************************************************/ + typedef IWineD3D* WINAPI (*WINED3DCREATE) (UINT, UINT, PVOID); - -static WINED3DCREATE pWineDirect3DCreate = NULL; - -HINSTANCE hWineD3D = NULL; - -static BOOL InitWineD3DFunction(PCSTR name, - FARPROC *funcptr) -{ - PVOID func; - - func = (PVOID)GetProcAddress(hWineD3D, name); - if (func != NULL) - { - (void)InterlockedCompareExchangePointer((PVOID*)funcptr, - func, - NULL); - return TRUE; - } - - return FALSE; -} - -static BOOL InitWineD3D(void) -{ - HMODULE hModWineD3D; - BOOL Ret = TRUE; - - hModWineD3D = LoadLibraryW(L"WINED3D.DLL"); - if (hModWineD3D == NULL) - return FALSE; - - if (InterlockedCompareExchangePointer((PVOID*)&hWineD3D, - (PVOID)hModWineD3D, - NULL) != NULL) - { - FreeLibrary(hModWineD3D); - } - - if (!InitWineD3DFunction("WineDirect3DCreate", (FARPROC*)&pWineDirect3DCreate)) - Ret = FALSE; - - return Ret; -} - -/* DATA **********************************************************************/ - -HANDLE ghDirectDraw; -ULONG gcDirectDraw; +static WINED3DCREATE pWineDirect3DCreate = NULL; +HINSTANCE hWineD3D = NULL; +HANDLE ghDirectDraw; +ULONG gcDirectDraw;
#define GetDdHandle(Handle) ((HANDLE)Handle ? (HANDLE)Handle : ghDirectDraw) #define HEL_OGL_STUB DPRINT1("HEL OGL STUB: %s\n", __FUNCTION__);\ @@ -1621,6 +1581,45 @@
/* PRIVATE FUNCTIONS *********************************************************/
+static BOOL InitWineD3DFunction(PCSTR name, + FARPROC *funcptr) +{ + PVOID func; + + func = (PVOID)GetProcAddress(hWineD3D, name); + if (func != NULL) + { + (void)InterlockedCompareExchangePointer((PVOID*)funcptr, + func, + NULL); + return TRUE; + } + + return FALSE; +} + +static BOOL InitWineD3D(void) +{ + HMODULE hModWineD3D; + BOOL Ret = TRUE; + + hModWineD3D = LoadLibraryW(L"WINED3D.DLL"); + if (hModWineD3D == NULL) + return FALSE; + + if (InterlockedCompareExchangePointer((PVOID*)&hWineD3D, + (PVOID)hModWineD3D, + NULL) != NULL) + { + FreeLibrary(hModWineD3D); + } + + if (!InitWineD3DFunction("WineDirect3DCreate", (FARPROC*)&pWineDirect3DCreate)) + Ret = FALSE; + + return Ret; +} + BOOL WINAPI bDDCreateSurface(LPDDRAWI_DDRAWSURFACE_LCL pSurface, @@ -1843,178 +1842,176 @@ DeleteDC(hdc); /* End dectect RGB bit mask */
- /* Clear the incoming pointer */ - RtlZeroMemory(pHalInfo, sizeof(DDHALINFO)); - - /* Convert all the data */ - pHalInfo->dwSize = sizeof(DDHALINFO); - - pHalInfo->vmiData.fpPrimary = 0; - pHalInfo->vmiData.dwFlags = 0; // MSDN Currently unused and should be set to zero. - - pHalInfo->vmiData.dwDisplayWidth = DevMode.dmPelsHeight; - pHalInfo->vmiData.dwDisplayHeight = DevMode.dmPelsWidth; - - /* ToDo align it right, we skip align it, it must be algin like the graphice card delta for the screen - * the graphice card delta is same as pHalInfo->vmiData.lDisplayPitch - */ - pHalInfo->vmiData.lDisplayPitch = (DevMode.dmPelsWidth * DevMode.dmBitsPerPel) / 8; - - /* Setup DDPIXELFORMAT for pHalInfo->vmiData.ddpfDisplay */ - pHalInfo->vmiData.ddpfDisplay.dwSize = sizeof(DDPIXELFORMAT); - switch(DevMode.dmBitsPerPel) - { - case 1: - pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED1; - break; - - case 2: - pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED2; - break; - - case 4: - pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED4; - break; - - case 8: - pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED8; - break; - - case 16: - case 24: - case 32: - pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_RGB; - break; - default: - break; - } - - pHalInfo->vmiData.ddpfDisplay.dwFourCC = 0; - pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount = DevMode.dmBitsPerPel; - pHalInfo->vmiData.ddpfDisplay.dwRBitMask = pMasks[0]; - pHalInfo->vmiData.ddpfDisplay.dwGBitMask = pMasks[1]; - pHalInfo->vmiData.ddpfDisplay.dwBBitMask = pMasks[2]; - pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask = pMasks[3]; - - /* ToDo ? align setting for wined3d */ - pHalInfo->vmiData.dwOffscreenAlign = 0; - pHalInfo->vmiData.dwOverlayAlign = 0; - pHalInfo->vmiData.dwTextureAlign = 0; - pHalInfo->vmiData.dwZBufferAlign = 0; - pHalInfo->vmiData.dwAlphaAlign = 0; - - pHalInfo->vmiData.dwNumHeaps = 0; - pHalInfo->vmiData.pvmList = NULL; - - // FIXME pHalInfo->ddCaps DDCORECAPS - - RtlZeroMemory(&pHalInfo->ddCaps, sizeof(DDCORECAPS)); - pHalInfo->ddCaps.dwSize = sizeof(DDCORECAPS); - - // FIXME fill in with wined3d caps here */ - - /* Note wined3d seam not support in pHalInfo->ddCaps.dwCaps - DDCAPS_ALIGNBOUNDARYDEST, DDCAPS_ALIGNSIZEDEST, DDCAPS_ALIGNSTRIDE - DDCAPS_ALPHA - DDCAPS_BLTFOURCC, DDCAPS_BLTQUEUE - DDCAPS_OVERLAY, DDCAPS_OVERLAYCANTCLIP, DDCAPS_OVERLAYFOURCC, DDCAPS_OVERLAYSTRETCH - DDCAPS_PALETTE, DDCAPS_PALETTEVSYNC - DDCAPS_READSCANLINE - DDCAPS_STEREOVIEW - DDCAPS_VBI - DDCAPS_ZBLTS - DDCAPS_ZOVERLAYS - */ - pHalInfo->ddCaps.dwCaps = DDCAPS_BLT | - DDCAPS_BLTCOLORFILL | - DDCAPS_BLTDEPTHFILL | - DDCAPS_BLTSTRETCH | - DDCAPS_CANBLTSYSMEM | - DDCAPS_CANCLIP | - DDCAPS_CANCLIPSTRETCHED | - DDCAPS_COLORKEY | - DDCAPS_COLORKEYHWASSIST | - DDCAPS_ALIGNBOUNDARYSRC | - DDCAPS_GDI | - DDCAPS_PALETTE | - DDCAPS_3D; - - /* See msdn what pHalInfo->ddCaps.dwCaps2 does not support */ - pHalInfo->ddCaps.dwCaps2 = DDCAPS2_CERTIFIED | - DDCAPS2_NOPAGELOCKREQUIRED | - DDCAPS2_PRIMARYGAMMA | - DDCAPS2_WIDESURFACES | - DDCAPS2_CANRENDERWINDOWED; - - /* See msdn what pHalInfo->ddCaps.dwCKeyCaps does not support */ - pHalInfo->ddCaps.dwCKeyCaps = DDCKEYCAPS_DESTBLT | - DDCKEYCAPS_SRCBLT; - - /* See msdn what pHalInfo->ddCaps.dwFXCaps does not support */ - pHalInfo->ddCaps.dwFXCaps = DDFXCAPS_BLTALPHA | - DDFXCAPS_BLTMIRRORLEFTRIGHT | - DDFXCAPS_BLTMIRRORUPDOWN | - DDFXCAPS_BLTROTATION90 | - DDFXCAPS_BLTSHRINKX | - DDFXCAPS_BLTSHRINKXN | - DDFXCAPS_BLTSHRINKY | - DDFXCAPS_BLTSHRINKXN | - DDFXCAPS_BLTSTRETCHX | - DDFXCAPS_BLTSTRETCHXN | - DDFXCAPS_BLTSTRETCHY | - DDFXCAPS_BLTSTRETCHYN; - - /* See msdn what pHalInfo->ddCaps.dwSVBCaps does not support */ - pHalInfo->ddCaps.dwSVBCaps = pHalInfo->ddCaps.dwCaps; - - /* See msdn what pHalInfo->ddCaps.dwCaps does not support */ - pHalInfo->ddCaps.ddsCaps.dwCaps = DDSCAPS_ALPHA | - DDSCAPS_BACKBUFFER | - DDSCAPS_FLIP | - DDSCAPS_FRONTBUFFER | - DDSCAPS_OFFSCREENPLAIN | - DDSCAPS_PALETTE | - DDSCAPS_PRIMARYSURFACE | - DDSCAPS_SYSTEMMEMORY | - DDSCAPS_VIDEOMEMORY | - DDSCAPS_VISIBLE | - DDSCAPS_3DDEVICE | - DDSCAPS_MIPMAP | - DDSCAPS_TEXTURE | - DDSCAPS_ZBUFFER; - - /* always force rope 0x1000 for hal it mean only source copy is supported */ - pHalInfo->ddCaps.dwRops[6] = 0x1000; - - - pHalInfo->GetDriverInfo = (LPDDHAL_GETDRIVERINFO) DdGetDriverInfo; - - pHalInfo->dwFlags = DDHALINFO_ISPRIMARYDISPLAY; // we assume the current drv is the primary driver - /* DDHALINFO_ISPRIMARYDISPLAY - * Driver is the primary display driver. - * - * DDHALINFO_MODEXILLEGAL - * Hardware does not support ModeX modes - * - * DDHALINFO_GETDRIVERINFOSET - * The GetDriverInfo member is set, gdi32 does always set it - * - * DDHALINFO_GETDRIVERINFO2 - * Driver supports GetDriverInfo2 variant of GetDriverInfo - */ - - /* Setup callbacks */ - pHalInfo->lpDDCallbacks = pDDCallbacks; - pHalInfo->lpDDSurfaceCallbacks = pDDSurfaceCallbacks; - pHalInfo->lpDDPaletteCallbacks =pDDPaletteCallbacks; - pHalInfo->lpD3DGlobalDriverData = (ULONG_PTR)pD3dDriverData; - pHalInfo->lpD3DHALCallbacks = (ULONG_PTR)pD3dCallbacks; - pHalInfo->lpDDExeBufCallbacks = pD3dBufferCallbacks; - - /* FIXME - pHalInfo->ddCaps.dwNumFourCCCodes = FourCCs; - pHalInfo->lpdwFourCC = pdwFourCC; - */ + /* Clear the incoming pointer */ + RtlZeroMemory(pHalInfo, sizeof(DDHALINFO)); + + /* Convert all the data */ + pHalInfo->dwSize = sizeof(DDHALINFO); + + pHalInfo->vmiData.fpPrimary = 0; + pHalInfo->vmiData.dwFlags = 0; // MSDN Currently unused and should be set to zero. + + pHalInfo->vmiData.dwDisplayWidth = DevMode.dmPelsHeight; + pHalInfo->vmiData.dwDisplayHeight = DevMode.dmPelsWidth; + + /* ToDo align it right, we skip align it, it must be algin like the graphice card delta for the screen + * the graphice card delta is same as pHalInfo->vmiData.lDisplayPitch + */ + pHalInfo->vmiData.lDisplayPitch = (DevMode.dmPelsWidth * DevMode.dmBitsPerPel) / 8; + + /* Setup DDPIXELFORMAT for pHalInfo->vmiData.ddpfDisplay */ + pHalInfo->vmiData.ddpfDisplay.dwSize = sizeof(DDPIXELFORMAT); + switch(DevMode.dmBitsPerPel) + { + case 1: + pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED1; + break; + + case 2: + pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED2; + break; + + case 4: + pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED4; + break; + + case 8: + pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_PALETTEINDEXED8; + break; + + case 16: + case 24: + case 32: + pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_RGB; + break; + default: + break; + } + + pHalInfo->vmiData.ddpfDisplay.dwFourCC = 0; + pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount = DevMode.dmBitsPerPel; + pHalInfo->vmiData.ddpfDisplay.dwRBitMask = pMasks[0]; + pHalInfo->vmiData.ddpfDisplay.dwGBitMask = pMasks[1]; + pHalInfo->vmiData.ddpfDisplay.dwBBitMask = pMasks[2]; + pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask = pMasks[3]; + + /* ToDo ? align setting for wined3d */ + pHalInfo->vmiData.dwOffscreenAlign = 0; + pHalInfo->vmiData.dwOverlayAlign = 0; + pHalInfo->vmiData.dwTextureAlign = 0; + pHalInfo->vmiData.dwZBufferAlign = 0; + pHalInfo->vmiData.dwAlphaAlign = 0; + + pHalInfo->vmiData.dwNumHeaps = 0; + pHalInfo->vmiData.pvmList = NULL; + + // FIXME pHalInfo->ddCaps DDCORECAPS + + RtlZeroMemory(&pHalInfo->ddCaps, sizeof(DDCORECAPS)); + pHalInfo->ddCaps.dwSize = sizeof(DDCORECAPS); + + // FIXME fill in with wined3d caps here */ + + /* Note wined3d seam not support in pHalInfo->ddCaps.dwCaps + DDCAPS_ALIGNBOUNDARYDEST, DDCAPS_ALIGNSIZEDEST, DDCAPS_ALIGNSTRIDE + DDCAPS_ALPHA + DDCAPS_BLTFOURCC, DDCAPS_BLTQUEUE + DDCAPS_OVERLAY, DDCAPS_OVERLAYCANTCLIP, DDCAPS_OVERLAYFOURCC, DDCAPS_OVERLAYSTRETCH + DDCAPS_PALETTE, DDCAPS_PALETTEVSYNC + DDCAPS_READSCANLINE + DDCAPS_STEREOVIEW + DDCAPS_VBI + DDCAPS_ZBLTS + DDCAPS_ZOVERLAYS + */ + pHalInfo->ddCaps.dwCaps = DDCAPS_BLT | + DDCAPS_BLTCOLORFILL | + DDCAPS_BLTDEPTHFILL | + DDCAPS_BLTSTRETCH | + DDCAPS_CANBLTSYSMEM | + DDCAPS_CANCLIP | + DDCAPS_CANCLIPSTRETCHED | + DDCAPS_COLORKEY | + DDCAPS_COLORKEYHWASSIST | + DDCAPS_ALIGNBOUNDARYSRC | + DDCAPS_GDI | + DDCAPS_PALETTE | + DDCAPS_3D; + + /* See msdn what pHalInfo->ddCaps.dwCaps2 does not support */ + pHalInfo->ddCaps.dwCaps2 = DDCAPS2_CERTIFIED | + DDCAPS2_NOPAGELOCKREQUIRED | + DDCAPS2_PRIMARYGAMMA | + DDCAPS2_WIDESURFACES | + DDCAPS2_CANRENDERWINDOWED; + + /* See msdn what pHalInfo->ddCaps.dwCKeyCaps does not support */ + pHalInfo->ddCaps.dwCKeyCaps = DDCKEYCAPS_DESTBLT | DDCKEYCAPS_SRCBLT; + + /* See msdn what pHalInfo->ddCaps.dwFXCaps does not support */ + pHalInfo->ddCaps.dwFXCaps = DDFXCAPS_BLTALPHA | + DDFXCAPS_BLTMIRRORLEFTRIGHT | + DDFXCAPS_BLTMIRRORUPDOWN | + DDFXCAPS_BLTROTATION90 | + DDFXCAPS_BLTSHRINKX | + DDFXCAPS_BLTSHRINKXN | + DDFXCAPS_BLTSHRINKY | + DDFXCAPS_BLTSHRINKXN | + DDFXCAPS_BLTSTRETCHX | + DDFXCAPS_BLTSTRETCHXN | + DDFXCAPS_BLTSTRETCHY | + DDFXCAPS_BLTSTRETCHYN; + + /* See msdn what pHalInfo->ddCaps.dwSVBCaps does not support */ + pHalInfo->ddCaps.dwSVBCaps = pHalInfo->ddCaps.dwCaps; + + /* See msdn what pHalInfo->ddCaps.dwCaps does not support */ + pHalInfo->ddCaps.ddsCaps.dwCaps = DDSCAPS_ALPHA | + DDSCAPS_BACKBUFFER | + DDSCAPS_FLIP | + DDSCAPS_FRONTBUFFER | + DDSCAPS_OFFSCREENPLAIN | + DDSCAPS_PALETTE | + DDSCAPS_PRIMARYSURFACE | + DDSCAPS_SYSTEMMEMORY | + DDSCAPS_VIDEOMEMORY | + DDSCAPS_VISIBLE | + DDSCAPS_3DDEVICE | + DDSCAPS_MIPMAP | + DDSCAPS_TEXTURE | + DDSCAPS_ZBUFFER; + + /* always force rope 0x1000 for hal it mean only source copy is supported */ + pHalInfo->ddCaps.dwRops[6] = 0x1000; + + pHalInfo->GetDriverInfo = (LPDDHAL_GETDRIVERINFO) DdGetDriverInfo; + + pHalInfo->dwFlags = DDHALINFO_ISPRIMARYDISPLAY; // we assume the current drv is the primary driver + /* DDHALINFO_ISPRIMARYDISPLAY + * Driver is the primary display driver. + * + * DDHALINFO_MODEXILLEGAL + * Hardware does not support ModeX modes + * + * DDHALINFO_GETDRIVERINFOSET + * The GetDriverInfo member is set, gdi32 does always set it + * + * DDHALINFO_GETDRIVERINFO2 + * Driver supports GetDriverInfo2 variant of GetDriverInfo + */ + + /* Setup callbacks */ + pHalInfo->lpDDCallbacks = pDDCallbacks; + pHalInfo->lpDDSurfaceCallbacks = pDDSurfaceCallbacks; + pHalInfo->lpDDPaletteCallbacks =pDDPaletteCallbacks; + pHalInfo->lpD3DGlobalDriverData = (ULONG_PTR)pD3dDriverData; + pHalInfo->lpD3DHALCallbacks = (ULONG_PTR)pD3dCallbacks; + pHalInfo->lpDDExeBufCallbacks = pD3dBufferCallbacks; + + /* FIXME + pHalInfo->ddCaps.dwNumFourCCCodes = FourCCs; + pHalInfo->lpdwFourCC = pdwFourCC; + */
/* Now check if we got any DD callbacks */ if (pDDCallbacks)