diff options
Diffstat (limited to 'hw/xwin/winengine.c')
-rw-r--r-- | hw/xwin/winengine.c | 307 |
1 files changed, 152 insertions, 155 deletions
diff --git a/hw/xwin/winengine.c b/hw/xwin/winengine.c index 67489598b..e2276498c 100644 --- a/hw/xwin/winengine.c +++ b/hw/xwin/winengine.c @@ -38,8 +38,8 @@ * Global variables for function pointers into * dynamically loaded libraries */ -FARPROC g_fpDirectDrawCreate = NULL; -FARPROC g_fpDirectDrawCreateClipper = NULL; +FARPROC g_fpDirectDrawCreate = NULL; +FARPROC g_fpDirectDrawCreateClipper = NULL; /* module handle for dynamically loaded directdraw library @@ -52,80 +52,77 @@ static HMODULE g_hmodDirectDraw = NULL; */ void -winDetectSupportedEngines(void) +winDetectSupportedEngines (void) { - OSVERSIONINFO osvi; + OSVERSIONINFO osvi; - /* Initialize the engine support flags */ - g_dwEnginesSupported = WIN_SERVER_SHADOW_GDI; + /* Initialize the engine support flags */ + g_dwEnginesSupported = WIN_SERVER_SHADOW_GDI; #ifdef XWIN_NATIVEGDI - g_dwEnginesSupported |= WIN_SERVER_NATIVE_GDI; + g_dwEnginesSupported |= WIN_SERVER_NATIVE_GDI; #endif - /* Get operating system version information */ - ZeroMemory(&osvi, sizeof(osvi)); - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx(&osvi); + /* Get operating system version information */ + ZeroMemory (&osvi, sizeof (osvi)); + osvi.dwOSVersionInfoSize = sizeof (osvi); + GetVersionEx (&osvi); - /* Do we have DirectDraw? */ + /* Do we have DirectDraw? */ if (g_hmodDirectDraw != NULL) { - LPDIRECTDRAW lpdd = NULL; - LPDIRECTDRAW4 lpdd4 = NULL; - HRESULT ddrval; + LPDIRECTDRAW lpdd = NULL; + LPDIRECTDRAW4 lpdd4 = NULL; + HRESULT ddrval; - /* Was the DirectDrawCreate function found? */ + /* Was the DirectDrawCreate function found? */ if (g_fpDirectDrawCreate == NULL) { - /* No DirectDraw support */ - return; - } + /* No DirectDraw support */ + return; + } - /* DirectDrawCreate exists, try to call it */ - /* Create a DirectDraw object, store the address at lpdd */ + /* DirectDrawCreate exists, try to call it */ + /* Create a DirectDraw object, store the address at lpdd */ ddrval = (*g_fpDirectDrawCreate) (NULL, (void **) &lpdd, NULL); if (FAILED(ddrval)) { - /* No DirectDraw support */ + /* No DirectDraw support */ winErrorFVerb(2, "winDetectSupportedEngines - DirectDraw not installed\n"); - return; - } + return; + } else { - /* We have DirectDraw */ - winErrorFVerb(2, - "winDetectSupportedEngines - DirectDraw installed\n"); - g_dwEnginesSupported |= WIN_SERVER_SHADOW_DD; + /* We have DirectDraw */ + winErrorFVerb (2, "winDetectSupportedEngines - DirectDraw installed, allowing ShadowDD\n"); + g_dwEnginesSupported |= WIN_SERVER_SHADOW_DD; #ifdef XWIN_PRIMARYFB - /* Allow PrimaryDD engine if NT */ + /* Allow PrimaryDD engine if NT */ if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) { - g_dwEnginesSupported |= WIN_SERVER_PRIMARY_DD; - winErrorFVerb(2, - "winDetectSupportedEngines - Allowing PrimaryDD\n"); - } + g_dwEnginesSupported |= WIN_SERVER_PRIMARY_DD; + winErrorFVerb (2, "winDetectSupportedEngines - Windows NT, allowing PrimaryDD\n"); + } #endif - } + } - /* Try to query for DirectDraw4 interface */ - ddrval = IDirectDraw_QueryInterface(lpdd, - &IID_IDirectDraw4, - (LPVOID *) & lpdd4); + /* Try to query for DirectDraw4 interface */ + ddrval = IDirectDraw_QueryInterface (lpdd, + &IID_IDirectDraw4, + (LPVOID*) &lpdd4); if (SUCCEEDED(ddrval)) { - /* We have DirectDraw4 */ - winErrorFVerb(2, - "winDetectSupportedEngines - DirectDraw4 installed\n"); - g_dwEnginesSupported |= WIN_SERVER_SHADOW_DDNL; - } - - /* Cleanup DirectDraw interfaces */ - if (lpdd4 != NULL) - IDirectDraw_Release(lpdd4); - if (lpdd != NULL) - IDirectDraw_Release(lpdd); + /* We have DirectDraw4 */ + winErrorFVerb (2, "winDetectSupportedEngines - DirectDraw4 installed, allowing ShadowDDNL\n"); + g_dwEnginesSupported |= WIN_SERVER_SHADOW_DDNL; + } + + /* Cleanup DirectDraw interfaces */ + if (lpdd4 != NULL) + IDirectDraw_Release (lpdd4); + if (lpdd != NULL) + IDirectDraw_Release (lpdd); } winErrorFVerb(2, "winDetectSupportedEngines - Returning, supported engines %08x\n", - (unsigned int) g_dwEnginesSupported); + (unsigned int) g_dwEnginesSupported); } /* @@ -135,124 +132,124 @@ winDetectSupportedEngines(void) */ Bool -winSetEngine(ScreenPtr pScreen) +winSetEngine (ScreenPtr pScreen) { - winScreenPriv(pScreen); - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - HDC hdc; - DWORD dwBPP; + winScreenPriv(pScreen); + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + HDC hdc; + DWORD dwBPP; - /* Get a DC */ - hdc = GetDC(NULL); + /* Get a DC */ + hdc = GetDC (NULL); if (hdc == NULL) { - ErrorF("winSetEngine - Couldn't get an HDC\n"); - return FALSE; + ErrorF ("winSetEngine - Couldn't get an HDC\n"); + return FALSE; } - /* - * pScreenInfo->dwBPP may be 0 to indicate that the current screen - * depth is to be used. Thus, we must query for the current display - * depth here. - */ - dwBPP = GetDeviceCaps(hdc, BITSPIXEL); + /* + * pScreenInfo->dwBPP may be 0 to indicate that the current screen + * depth is to be used. Thus, we must query for the current display + * depth here. + */ + dwBPP = GetDeviceCaps (hdc, BITSPIXEL); - /* Release the DC */ - ReleaseDC(NULL, hdc); - hdc = NULL; + /* Release the DC */ + ReleaseDC (NULL, hdc); + hdc = NULL; - /* ShadowGDI is the only engine that supports windowed PseudoColor */ + /* ShadowGDI is the only engine that supports windowed PseudoColor */ if (dwBPP == 8 && !pScreenInfo->fFullScreen) { winErrorFVerb(2, "winSetEngine - Windowed && PseudoColor => ShadowGDI\n"); - pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; + pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; - /* Set engine function pointers */ - winSetEngineFunctionsShadowGDI(pScreen); - return TRUE; + /* Set engine function pointers */ + winSetEngineFunctionsShadowGDI (pScreen); + return TRUE; } - /* ShadowGDI is the only engine that supports Multi Window Mode */ + /* ShadowGDI is the only engine that supports Multi Window Mode */ if (FALSE #ifdef XWIN_MULTIWINDOWEXTWM - || pScreenInfo->fMWExtWM + || pScreenInfo->fMWExtWM #endif #ifdef XWIN_MULTIWINDOW - || pScreenInfo->fMultiWindow + || pScreenInfo->fMultiWindow #endif ) { winErrorFVerb(2, "winSetEngine - Multi Window or Rootless => ShadowGDI\n"); - pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; + pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; - /* Set engine function pointers */ - winSetEngineFunctionsShadowGDI(pScreen); - return TRUE; + /* Set engine function pointers */ + winSetEngineFunctionsShadowGDI (pScreen); + return TRUE; } - /* If the user's choice is supported, we'll use that */ + /* If the user's choice is supported, we'll use that */ if (g_dwEnginesSupported & pScreenInfo->dwEnginePreferred) { - winErrorFVerb(2, "winSetEngine - Using user's preference: %d\n", - (int) pScreenInfo->dwEnginePreferred); - pScreenInfo->dwEngine = pScreenInfo->dwEnginePreferred; + winErrorFVerb (2, "winSetEngine - Using user's preference: %d\n", + (int) pScreenInfo->dwEnginePreferred); + pScreenInfo->dwEngine = pScreenInfo->dwEnginePreferred; - /* Setup engine function pointers */ + /* Setup engine function pointers */ switch (pScreenInfo->dwEngine) { - case WIN_SERVER_SHADOW_GDI: - winSetEngineFunctionsShadowGDI(pScreen); - break; - case WIN_SERVER_SHADOW_DD: - winSetEngineFunctionsShadowDD(pScreen); - break; - case WIN_SERVER_SHADOW_DDNL: - winSetEngineFunctionsShadowDDNL(pScreen); - break; + case WIN_SERVER_SHADOW_GDI: + winSetEngineFunctionsShadowGDI (pScreen); + break; + case WIN_SERVER_SHADOW_DD: + winSetEngineFunctionsShadowDD (pScreen); + break; + case WIN_SERVER_SHADOW_DDNL: + winSetEngineFunctionsShadowDDNL (pScreen); + break; #ifdef XWIN_PRIMARYFB - case WIN_SERVER_PRIMARY_DD: - winSetEngineFunctionsPrimaryDD(pScreen); - break; + case WIN_SERVER_PRIMARY_DD: + winSetEngineFunctionsPrimaryDD (pScreen); + break; #endif #ifdef XWIN_NATIVEGDI - case WIN_SERVER_NATIVE_GDI: - winSetEngineFunctionsNativeGDI(pScreen); - break; + case WIN_SERVER_NATIVE_GDI: + winSetEngineFunctionsNativeGDI (pScreen); + break; #endif - default: - FatalError("winSetEngine - Invalid engine type\n"); - } - return TRUE; + default: + FatalError ("winSetEngine - Invalid engine type\n"); + } + return TRUE; } - /* ShadowDDNL has good performance, so why not */ + /* ShadowDDNL has good performance, so why not */ if (g_dwEnginesSupported & WIN_SERVER_SHADOW_DDNL) { - winErrorFVerb(2, "winSetEngine - Using Shadow DirectDraw NonLocking\n"); - pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DDNL; + winErrorFVerb (2, "winSetEngine - Using Shadow DirectDraw NonLocking\n"); + pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DDNL; - /* Set engine function pointers */ - winSetEngineFunctionsShadowDDNL(pScreen); - return TRUE; + /* Set engine function pointers */ + winSetEngineFunctionsShadowDDNL (pScreen); + return TRUE; } - /* ShadowDD is next in line */ + /* ShadowDD is next in line */ if (g_dwEnginesSupported & WIN_SERVER_SHADOW_DD) { - winErrorFVerb(2, "winSetEngine - Using Shadow DirectDraw\n"); - pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DD; + winErrorFVerb (2, "winSetEngine - Using Shadow DirectDraw\n"); + pScreenInfo->dwEngine = WIN_SERVER_SHADOW_DD; - /* Set engine function pointers */ - winSetEngineFunctionsShadowDD(pScreen); - return TRUE; + /* Set engine function pointers */ + winSetEngineFunctionsShadowDD (pScreen); + return TRUE; } - /* ShadowGDI is next in line */ + /* ShadowGDI is next in line */ if (g_dwEnginesSupported & WIN_SERVER_SHADOW_GDI) { - winErrorFVerb(2, "winSetEngine - Using Shadow GDI DIB\n"); - pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; + winErrorFVerb (2, "winSetEngine - Using Shadow GDI DIB\n"); + pScreenInfo->dwEngine = WIN_SERVER_SHADOW_GDI; - /* Set engine function pointers */ - winSetEngineFunctionsShadowGDI(pScreen); - return TRUE; + /* Set engine function pointers */ + winSetEngineFunctionsShadowGDI (pScreen); + return TRUE; } - return TRUE; + return TRUE; } /* @@ -260,58 +257,58 @@ winSetEngine(ScreenPtr pScreen) */ Bool -winGetDDProcAddresses(void) +winGetDDProcAddresses (void) { - Bool fReturn = TRUE; - - /* Load the DirectDraw library */ - g_hmodDirectDraw = LoadLibraryEx("ddraw.dll", NULL, 0); + Bool fReturn = TRUE; + + /* Load the DirectDraw library */ + g_hmodDirectDraw = LoadLibraryEx ("ddraw.dll", NULL, 0); if (g_hmodDirectDraw == NULL) { - ErrorF("winGetDDProcAddresses - Could not load ddraw.dll\n"); - fReturn = TRUE; - goto winGetDDProcAddresses_Exit; + ErrorF ("winGetDDProcAddresses - Could not load ddraw.dll\n"); + fReturn = TRUE; + goto winGetDDProcAddresses_Exit; } - /* Try to get the DirectDrawCreate address */ + /* Try to get the DirectDrawCreate address */ g_fpDirectDrawCreate = GetProcAddress(g_hmodDirectDraw, "DirectDrawCreate"); if (g_fpDirectDrawCreate == NULL) { - ErrorF("winGetDDProcAddresses - Could not get DirectDrawCreate " - "address\n"); - fReturn = TRUE; - goto winGetDDProcAddresses_Exit; + ErrorF ("winGetDDProcAddresses - Could not get DirectDrawCreate " + "address\n"); + fReturn = TRUE; + goto winGetDDProcAddresses_Exit; } - /* Try to get the DirectDrawCreateClipper address */ - g_fpDirectDrawCreateClipper = GetProcAddress(g_hmodDirectDraw, - "DirectDrawCreateClipper"); + /* Try to get the DirectDrawCreateClipper address */ + g_fpDirectDrawCreateClipper = GetProcAddress (g_hmodDirectDraw, + "DirectDrawCreateClipper"); if (g_fpDirectDrawCreateClipper == NULL) { - ErrorF("winGetDDProcAddresses - Could not get " - "DirectDrawCreateClipper address\n"); - fReturn = FALSE; - goto winGetDDProcAddresses_Exit; + ErrorF ("winGetDDProcAddresses - Could not get " + "DirectDrawCreateClipper address\n"); + fReturn = FALSE; + goto winGetDDProcAddresses_Exit; } - /* - * Note: Do not unload ddraw.dll here. Do it in GiveUp - */ + /* + * Note: Do not unload ddraw.dll here. Do it in GiveUp + */ winGetDDProcAddresses_Exit: - /* Unload the DirectDraw library if we failed to initialize */ + /* Unload the DirectDraw library if we failed to initialize */ if (!fReturn && g_hmodDirectDraw != NULL) { - FreeLibrary(g_hmodDirectDraw); - g_hmodDirectDraw = NULL; + FreeLibrary (g_hmodDirectDraw); + g_hmodDirectDraw = NULL; } - - return fReturn; + + return fReturn; } void winReleaseDDProcAddresses(void) { if (g_hmodDirectDraw != NULL) { - FreeLibrary(g_hmodDirectDraw); - g_hmodDirectDraw = NULL; - g_fpDirectDrawCreate = NULL; - g_fpDirectDrawCreateClipper = NULL; + FreeLibrary (g_hmodDirectDraw); + g_hmodDirectDraw = NULL; + g_fpDirectDrawCreate = NULL; + g_fpDirectDrawCreateClipper = NULL; } } |