diff options
Diffstat (limited to 'xorg-server/hw/xwin/winnativegdi.c')
-rw-r--r-- | xorg-server/hw/xwin/winnativegdi.c | 629 |
1 files changed, 293 insertions, 336 deletions
diff --git a/xorg-server/hw/xwin/winnativegdi.c b/xorg-server/hw/xwin/winnativegdi.c index 68f802005..8a1455b90 100644 --- a/xorg-server/hw/xwin/winnativegdi.c +++ b/xorg-server/hw/xwin/winnativegdi.c @@ -33,76 +33,69 @@ #endif #include "win.h" - /* * Local function prototypes */ static Bool -winAllocateFBNativeGDI (ScreenPtr pScreen); + winAllocateFBNativeGDI(ScreenPtr pScreen); static void -winShadowUpdateNativeGDI (ScreenPtr pScreen, - shadowBufPtr pBuf); + winShadowUpdateNativeGDI(ScreenPtr pScreen, shadowBufPtr pBuf); static Bool -winCloseScreenNativeGDI (int nIndex, ScreenPtr pScreen); + winCloseScreenNativeGDI(int nIndex, ScreenPtr pScreen); static Bool -winInitVisualsNativeGDI (ScreenPtr pScreen); + winInitVisualsNativeGDI(ScreenPtr pScreen); static Bool -winAdjustVideoModeNativeGDI (ScreenPtr pScreen); + winAdjustVideoModeNativeGDI(ScreenPtr pScreen); #if 0 static Bool -winBltExposedRegionsNativeGDI (ScreenPtr pScreen); + winBltExposedRegionsNativeGDI(ScreenPtr pScreen); #endif static Bool -winActivateAppNativeGDI (ScreenPtr pScreen); + winActivateAppNativeGDI(ScreenPtr pScreen); static Bool -winRedrawScreenNativeGDI (ScreenPtr pScreen); + winRedrawScreenNativeGDI(ScreenPtr pScreen); static Bool -winRealizeInstalledPaletteNativeGDI (ScreenPtr pScreen); + winRealizeInstalledPaletteNativeGDI(ScreenPtr pScreen); static Bool -winInstallColormapNativeGDI (ColormapPtr pColormap); + winInstallColormapNativeGDI(ColormapPtr pColormap); static Bool -winStoreColorsNativeGDI (ColormapPtr pmap, - int ndef, - xColorItem *pdefs); + winStoreColorsNativeGDI(ColormapPtr pmap, int ndef, xColorItem * pdefs); static Bool -winCreateColormapNativeGDI (ColormapPtr pColormap); + winCreateColormapNativeGDI(ColormapPtr pColormap); static Bool -winDestroyColormapNativeGDI (ColormapPtr pColormap); - - + winDestroyColormapNativeGDI(ColormapPtr pColormap); static Bool -winAllocateFBNativeGDI (ScreenPtr pScreen) +winAllocateFBNativeGDI(ScreenPtr pScreen) { - FatalError ("winAllocateFBNativeGDI\n"); + FatalError("winAllocateFBNativeGDI\n"); - return TRUE; + return TRUE; } static void -winFreeFBNativeGDI (ScreenPtr pScreen) +winFreeFBNativeGDI(ScreenPtr pScreen) { - FatalError ("winFreeFBNativeGDI\n"); + FatalError("winFreeFBNativeGDI\n"); } - static Bool winInitScreenNativeGDI(ScreenPtr pScreen) { - FatalError ("winInitScreenNativeGDI\n"); + FatalError("winInitScreenNativeGDI\n"); } /* @@ -111,425 +104,389 @@ winInitScreenNativeGDI(ScreenPtr pScreen) */ static Bool -winCloseScreenNativeGDI (int nIndex, ScreenPtr pScreen) +winCloseScreenNativeGDI(int nIndex, ScreenPtr pScreen) { - winScreenPriv(pScreen); - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - - ErrorF ("winCloseScreenNativeGDI - Freeing screen resources\n"); - - /* Flag that the screen is closed */ - pScreenPriv->fClosed = TRUE; - pScreenPriv->fActive = FALSE; - - /* - * NOTE: mi doesn't use a CloseScreen procedure, so we do not - * need to call a wrapped procedure here. - */ - - /* Delete the window property */ - RemoveProp (pScreenPriv->hwndScreen, WIN_SCR_PROP); - - ErrorF ("winCloseScreenNativeGDI - Destroying window\n"); - - /* Delete tray icon, if we have one */ - if (!pScreenInfo->fNoTrayIcon) - winDeleteNotifyIcon (pScreenPriv); - - /* Free the exit confirmation dialog box, if it exists */ - if (g_hDlgExit != NULL) - { - DestroyWindow (g_hDlgExit); - g_hDlgExit = NULL; + winScreenPriv(pScreen); + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + + ErrorF("winCloseScreenNativeGDI - Freeing screen resources\n"); + + /* Flag that the screen is closed */ + pScreenPriv->fClosed = TRUE; + pScreenPriv->fActive = FALSE; + + /* + * NOTE: mi doesn't use a CloseScreen procedure, so we do not + * need to call a wrapped procedure here. + */ + + /* Delete the window property */ + RemoveProp(pScreenPriv->hwndScreen, WIN_SCR_PROP); + + ErrorF("winCloseScreenNativeGDI - Destroying window\n"); + + /* Delete tray icon, if we have one */ + if (!pScreenInfo->fNoTrayIcon) + winDeleteNotifyIcon(pScreenPriv); + + /* Free the exit confirmation dialog box, if it exists */ + if (g_hDlgExit != NULL) { + DestroyWindow(g_hDlgExit); + g_hDlgExit = NULL; } - /* Kill our window */ - if (pScreenPriv->hwndScreen) - { - DestroyWindow (pScreenPriv->hwndScreen); - pScreenPriv->hwndScreen = NULL; + /* Kill our window */ + if (pScreenPriv->hwndScreen) { + DestroyWindow(pScreenPriv->hwndScreen); + pScreenPriv->hwndScreen = NULL; } - /* Invalidate our screeninfo's pointer to the screen */ - pScreenInfo->pScreen = NULL; + /* Invalidate our screeninfo's pointer to the screen */ + pScreenInfo->pScreen = NULL; - /* Free the screen privates for this screen */ - free (pScreenPriv); + /* Free the screen privates for this screen */ + free(pScreenPriv); - ErrorF ("winCloseScreenNativeGDI - Returning\n"); + ErrorF("winCloseScreenNativeGDI - Returning\n"); - return TRUE; + return TRUE; } - static void -winShadowUpdateNativeGDI (ScreenPtr pScreen, - shadowBufPtr pBuf) +winShadowUpdateNativeGDI(ScreenPtr pScreen, shadowBufPtr pBuf) { - FatalError ("winShadowUpdateNativeGDI\n"); - return; + FatalError("winShadowUpdateNativeGDI\n"); + return; } - static Bool -winInitVisualsNativeGDI (ScreenPtr pScreen) +winInitVisualsNativeGDI(ScreenPtr pScreen) { - winScreenPriv(pScreen); - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + winScreenPriv(pScreen); + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - /* Set the bitsPerRGB and bit masks */ - switch (pScreenInfo->dwDepth) - { + /* Set the bitsPerRGB and bit masks */ + switch (pScreenInfo->dwDepth) { case 24: - pScreenPriv->dwBitsPerRGB = 8; - pScreenPriv->dwRedMask = 0x00FF0000; - pScreenPriv->dwGreenMask = 0x0000FF00; - pScreenPriv->dwBlueMask = 0x000000FF; - break; - + pScreenPriv->dwBitsPerRGB = 8; + pScreenPriv->dwRedMask = 0x00FF0000; + pScreenPriv->dwGreenMask = 0x0000FF00; + pScreenPriv->dwBlueMask = 0x000000FF; + break; + case 16: - pScreenPriv->dwBitsPerRGB = 6; - pScreenPriv->dwRedMask = 0xF800; - pScreenPriv->dwGreenMask = 0x07E0; - pScreenPriv->dwBlueMask = 0x001F; - break; - + pScreenPriv->dwBitsPerRGB = 6; + pScreenPriv->dwRedMask = 0xF800; + pScreenPriv->dwGreenMask = 0x07E0; + pScreenPriv->dwBlueMask = 0x001F; + break; + case 15: - pScreenPriv->dwBitsPerRGB = 5; - pScreenPriv->dwRedMask = 0x7C00; - pScreenPriv->dwGreenMask = 0x03E0; - pScreenPriv->dwBlueMask = 0x001F; - break; - + pScreenPriv->dwBitsPerRGB = 5; + pScreenPriv->dwRedMask = 0x7C00; + pScreenPriv->dwGreenMask = 0x03E0; + pScreenPriv->dwBlueMask = 0x001F; + break; + case 8: - pScreenPriv->dwBitsPerRGB = 8; - pScreenPriv->dwRedMask = 0; - pScreenPriv->dwGreenMask = 0; - pScreenPriv->dwBlueMask = 0; - break; + pScreenPriv->dwBitsPerRGB = 8; + pScreenPriv->dwRedMask = 0; + pScreenPriv->dwGreenMask = 0; + pScreenPriv->dwBlueMask = 0; + break; default: - ErrorF ("winInitVisualsNativeGDI - Unknown screen depth\n"); - return FALSE; - break; + ErrorF("winInitVisualsNativeGDI - Unknown screen depth\n"); + return FALSE; + break; } - /* Tell the user how many bits per RGB we are using */ - ErrorF ("winInitVisualsNativeGDI - Using dwBitsPerRGB: %d\n", - (int) pScreenPriv->dwBitsPerRGB); + /* Tell the user how many bits per RGB we are using */ + ErrorF("winInitVisualsNativeGDI - Using dwBitsPerRGB: %d\n", + (int) pScreenPriv->dwBitsPerRGB); - /* Create a single visual according to the Windows screen depth */ - switch (pScreenInfo->dwDepth) - { + /* Create a single visual according to the Windows screen depth */ + switch (pScreenInfo->dwDepth) { case 24: case 16: case 15: - if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth, - TrueColorMask, - pScreenPriv->dwBitsPerRGB, - TrueColor, - pScreenPriv->dwRedMask, - pScreenPriv->dwGreenMask, - pScreenPriv->dwBlueMask)) - { - ErrorF ("winInitVisuals - miSetVisualTypesAndMasks failed\n"); - return FALSE; - } - break; + if (!miSetVisualTypesAndMasks(pScreenInfo->dwDepth, + TrueColorMask, + pScreenPriv->dwBitsPerRGB, + TrueColor, + pScreenPriv->dwRedMask, + pScreenPriv->dwGreenMask, + pScreenPriv->dwBlueMask)) { + ErrorF("winInitVisuals - miSetVisualTypesAndMasks failed\n"); + return FALSE; + } + break; case 8: - ErrorF ("winInitVisuals - Calling miSetVisualTypesAndMasks\n"); - if (!miSetVisualTypesAndMasks (pScreenInfo->dwDepth, - StaticColorMask, - pScreenPriv->dwBitsPerRGB, - StaticColor, - pScreenPriv->dwRedMask, - pScreenPriv->dwGreenMask, - pScreenPriv->dwBlueMask)) - { - ErrorF ("winInitVisuals - miSetVisualTypesAndMasks failed\n"); - return FALSE; - } - break; + ErrorF("winInitVisuals - Calling miSetVisualTypesAndMasks\n"); + if (!miSetVisualTypesAndMasks(pScreenInfo->dwDepth, + StaticColorMask, + pScreenPriv->dwBitsPerRGB, + StaticColor, + pScreenPriv->dwRedMask, + pScreenPriv->dwGreenMask, + pScreenPriv->dwBlueMask)) { + ErrorF("winInitVisuals - miSetVisualTypesAndMasks failed\n"); + return FALSE; + } + break; default: - ErrorF ("winInitVisualsNativeGDI - Unknown screen depth\n"); - return FALSE; + ErrorF("winInitVisualsNativeGDI - Unknown screen depth\n"); + return FALSE; } #if 1 - ErrorF ("winInitVisualsNativeGDI - Returning\n"); + ErrorF("winInitVisualsNativeGDI - Returning\n"); #endif - return TRUE; + return TRUE; } - /* Adjust the video mode */ static Bool -winAdjustVideoModeNativeGDI (ScreenPtr pScreen) +winAdjustVideoModeNativeGDI(ScreenPtr pScreen) { - winScreenPriv(pScreen); - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - HDC hdc = NULL; - DWORD dwBPP; - - hdc = GetDC (NULL); - - /* We're in serious trouble if we can't get a DC */ - if (hdc == NULL) - { - ErrorF ("winAdjustVideoModeNativeGDI - GetDC () failed\n"); - return FALSE; + winScreenPriv(pScreen); + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + HDC hdc = NULL; + DWORD dwBPP; + + hdc = GetDC(NULL); + + /* We're in serious trouble if we can't get a DC */ + if (hdc == NULL) { + ErrorF("winAdjustVideoModeNativeGDI - GetDC () failed\n"); + return FALSE; } - /* Query GDI for current display depth */ - dwBPP = GetDeviceCaps (hdc, BITSPIXEL); - pScreenInfo->dwDepth = GetDeviceCaps (hdc, PLANES); + /* Query GDI for current display depth */ + dwBPP = GetDeviceCaps(hdc, BITSPIXEL); + pScreenInfo->dwDepth = GetDeviceCaps(hdc, PLANES); - switch (pScreenInfo->dwDepth) { + switch (pScreenInfo->dwDepth) { case 24: case 16: case 15: case 8: - break; + break; default: - if (dwBPP == 32) - pScreenInfo->dwDepth = 24; - else - pScreenInfo->dwDepth = dwBPP; - break; - } + if (dwBPP == 32) + pScreenInfo->dwDepth = 24; + else + pScreenInfo->dwDepth = dwBPP; + break; + } - /* GDI cannot change the screen depth, so we'll use GDI's depth */ - pScreenInfo->dwBPP = dwBPP; + /* GDI cannot change the screen depth, so we'll use GDI's depth */ + pScreenInfo->dwBPP = dwBPP; - /* Release our DC */ - ReleaseDC (NULL, hdc); + /* Release our DC */ + ReleaseDC(NULL, hdc); - return TRUE; + return TRUE; } - static Bool -winActivateAppNativeGDI (ScreenPtr pScreen) +winActivateAppNativeGDI(ScreenPtr pScreen) { - winScreenPriv(pScreen); - - /* - * Are we active? - * Are we fullscreen? - */ - if (pScreenPriv != NULL - && pScreenPriv->fActive - && pScreenPriv->pScreenInfo - && pScreenPriv->pScreenInfo->fFullScreen) - { - /* - * Activating, attempt to bring our window - * to the top of the display - */ - ShowWindow (pScreenPriv->hwndScreen, SW_RESTORE); + winScreenPriv(pScreen); + + /* + * Are we active? + * Are we fullscreen? + */ + if (pScreenPriv != NULL + && pScreenPriv->fActive + && pScreenPriv->pScreenInfo && pScreenPriv->pScreenInfo->fFullScreen) { + /* + * Activating, attempt to bring our window + * to the top of the display + */ + ShowWindow(pScreenPriv->hwndScreen, SW_RESTORE); } - /* - * Are we inactive? - * Are we fullscreen? - */ - if (pScreenPriv != NULL - && !pScreenPriv->fActive - && pScreenPriv->pScreenInfo - && pScreenPriv->pScreenInfo->fFullScreen) - { - /* - * Deactivating, stuff our window onto the - * task bar. - */ - ShowWindow (pScreenPriv->hwndScreen, SW_MINIMIZE); + /* + * Are we inactive? + * Are we fullscreen? + */ + if (pScreenPriv != NULL + && !pScreenPriv->fActive + && pScreenPriv->pScreenInfo && pScreenPriv->pScreenInfo->fFullScreen) { + /* + * Deactivating, stuff our window onto the + * task bar. + */ + ShowWindow(pScreenPriv->hwndScreen, SW_MINIMIZE); } - return TRUE; + return TRUE; } - HBITMAP -winCreateDIBNativeGDI (int iWidth, int iHeight, int iDepth, - BYTE **ppbBits, BITMAPINFO **ppbmi) +winCreateDIBNativeGDI(int iWidth, int iHeight, int iDepth, + BYTE ** ppbBits, BITMAPINFO ** ppbmi) { - BITMAPINFOHEADER *pbmih = NULL; - HBITMAP hBitmap = NULL; - BITMAPINFO *pbmi = NULL; - - /* Don't create an invalid bitmap */ - if (iWidth == 0 - || iHeight == 0 - || iDepth == 0) - { - ErrorF ("\nwinCreateDIBNativeGDI - Invalid specs w %d h %d d %d\n\n", - iWidth, iHeight, iDepth); - return NULL; + BITMAPINFOHEADER *pbmih = NULL; + HBITMAP hBitmap = NULL; + BITMAPINFO *pbmi = NULL; + + /* Don't create an invalid bitmap */ + if (iWidth == 0 || iHeight == 0 || iDepth == 0) { + ErrorF("\nwinCreateDIBNativeGDI - Invalid specs w %d h %d d %d\n\n", + iWidth, iHeight, iDepth); + return NULL; } - /* Allocate bitmap info header */ - pbmih = (BITMAPINFOHEADER*) malloc (sizeof (BITMAPINFOHEADER) - + 256 * sizeof (RGBQUAD)); - if (pbmih == NULL) - { - ErrorF ("winCreateDIBNativeGDI - malloc () failed\n"); - return FALSE; + /* Allocate bitmap info header */ + pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER) + + 256 * sizeof(RGBQUAD)); + if (pbmih == NULL) { + ErrorF("winCreateDIBNativeGDI - malloc () failed\n"); + return FALSE; } - ZeroMemory (pbmih, sizeof(BITMAPINFOHEADER) + 256 * sizeof (RGBQUAD)); - - /* Describe bitmap to be created */ - pbmih->biSize = sizeof (BITMAPINFOHEADER); - pbmih->biWidth = iWidth; - pbmih->biHeight = -iHeight; - pbmih->biPlanes = 1; - pbmih->biBitCount = iDepth; - pbmih->biCompression = BI_RGB; - pbmih->biSizeImage = 0; - pbmih->biXPelsPerMeter = 0; - pbmih->biYPelsPerMeter = 0; - pbmih->biClrUsed = 0; - pbmih->biClrImportant = 0; - - /* Setup color table for mono DIBs */ - if (iDepth == 1) - { - pbmi = (BITMAPINFO*) pbmih; - pbmi->bmiColors[1].rgbBlue = 255; - pbmi->bmiColors[1].rgbGreen = 255; - pbmi->bmiColors[1].rgbRed = 255; + ZeroMemory(pbmih, sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); + + /* Describe bitmap to be created */ + pbmih->biSize = sizeof(BITMAPINFOHEADER); + pbmih->biWidth = iWidth; + pbmih->biHeight = -iHeight; + pbmih->biPlanes = 1; + pbmih->biBitCount = iDepth; + pbmih->biCompression = BI_RGB; + pbmih->biSizeImage = 0; + pbmih->biXPelsPerMeter = 0; + pbmih->biYPelsPerMeter = 0; + pbmih->biClrUsed = 0; + pbmih->biClrImportant = 0; + + /* Setup color table for mono DIBs */ + if (iDepth == 1) { + pbmi = (BITMAPINFO *) pbmih; + pbmi->bmiColors[1].rgbBlue = 255; + pbmi->bmiColors[1].rgbGreen = 255; + pbmi->bmiColors[1].rgbRed = 255; } - /* Create a DIB with a bit pointer */ - hBitmap = CreateDIBSection (NULL, - (BITMAPINFO *) pbmih, - DIB_RGB_COLORS, - (void **) ppbBits, - NULL, - 0); - if (hBitmap == NULL) - { - ErrorF ("winCreateDIBNativeGDI - CreateDIBSection () failed\n"); - return NULL; + /* Create a DIB with a bit pointer */ + hBitmap = CreateDIBSection(NULL, + (BITMAPINFO *) pbmih, + DIB_RGB_COLORS, (void **) ppbBits, NULL, 0); + if (hBitmap == NULL) { + ErrorF("winCreateDIBNativeGDI - CreateDIBSection () failed\n"); + return NULL; } - /* Free the bitmap info header memory */ - if (ppbmi != NULL) - { - /* Store the address of the BMIH in the ppbmih parameter */ - *ppbmi = (BITMAPINFO *) pbmih; + /* Free the bitmap info header memory */ + if (ppbmi != NULL) { + /* Store the address of the BMIH in the ppbmih parameter */ + *ppbmi = (BITMAPINFO *) pbmih; } - else - { - free (pbmih); - pbmih = NULL; + else { + free(pbmih); + pbmih = NULL; } - return hBitmap; + return hBitmap; } - #if 0 static Bool -winBltExposedRegionsNativeGDI (ScreenPtr pScreen) +winBltExposedRegionsNativeGDI(ScreenPtr pScreen) { - - return TRUE; + + return TRUE; } #endif - static Bool -winRedrawScreenNativeGDI (ScreenPtr pScreen) +winRedrawScreenNativeGDI(ScreenPtr pScreen) { - FatalError ("winRedrawScreenNativeGDI\n"); - return TRUE; + FatalError("winRedrawScreenNativeGDI\n"); + return TRUE; } - static Bool -winRealizeInstalledPaletteNativeGDI (ScreenPtr pScreen) +winRealizeInstalledPaletteNativeGDI(ScreenPtr pScreen) { - FatalError ("winRealizeInstalledPaletteNativeGDI\n"); - return TRUE; + FatalError("winRealizeInstalledPaletteNativeGDI\n"); + return TRUE; } - static Bool -winInstallColormapNativeGDI (ColormapPtr pColormap) +winInstallColormapNativeGDI(ColormapPtr pColormap) { - FatalError ("winInstallColormapNativeGDI\n"); - return TRUE; + FatalError("winInstallColormapNativeGDI\n"); + return TRUE; } - static Bool -winStoreColorsNativeGDI (ColormapPtr pmap, - int ndef, - xColorItem *pdefs) +winStoreColorsNativeGDI(ColormapPtr pmap, int ndef, xColorItem * pdefs) { - FatalError ("winStoreColorsNativeGDI\n"); - return TRUE; + FatalError("winStoreColorsNativeGDI\n"); + return TRUE; } - static Bool -winCreateColormapNativeGDI (ColormapPtr pColormap) +winCreateColormapNativeGDI(ColormapPtr pColormap) { - FatalError ("winCreateColormapNativeGDI\n"); - return TRUE; + FatalError("winCreateColormapNativeGDI\n"); + return TRUE; } - static Bool -winDestroyColormapNativeGDI (ColormapPtr pColormap) +winDestroyColormapNativeGDI(ColormapPtr pColormap) { - FatalError ("winDestroyColormapNativeGDI\n"); - return TRUE; + FatalError("winDestroyColormapNativeGDI\n"); + return TRUE; } - /* Set engine specific funtions */ Bool -winSetEngineFunctionsNativeGDI (ScreenPtr pScreen) +winSetEngineFunctionsNativeGDI(ScreenPtr pScreen) { - winScreenPriv(pScreen); - winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; - - /* Set our pointers */ - pScreenPriv->pwinAllocateFB = winAllocateFBNativeGDI; - pScreenPriv->pwinFreeFB = winFreeFBNativeGDI; - pScreenPriv->pwinShadowUpdate = winShadowUpdateNativeGDI; - pScreenPriv->pwinInitScreen = winInitScreenNativeGDI; - pScreenPriv->pwinCloseScreen = winCloseScreenNativeGDI; - pScreenPriv->pwinInitVisuals = winInitVisualsNativeGDI; - pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeNativeGDI; - if (pScreenInfo->fFullScreen) - pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowFullScreen; - else - pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed; - pScreenPriv->pwinFinishScreenInit = winFinishScreenInitNativeGDI; - /* - * WARNING: Do not set the BltExposedRegions procedure pointer to anything - * other than NULL until a working painting procedure is in place. - * Else, winWindowProc will get stuck in an infinite loop because - * Windows expects the BeginPaint and EndPaint functions to be called - * before a WM_PAINT message can be removed from the queue. We are - * using NULL here as a signal for winWindowProc that it should - * not signal that the WM_PAINT message has been processed. - */ - pScreenPriv->pwinBltExposedRegions = NULL; - pScreenPriv->pwinActivateApp = winActivateAppNativeGDI; - pScreenPriv->pwinRedrawScreen = winRedrawScreenNativeGDI; - pScreenPriv->pwinRealizeInstalledPalette = - winRealizeInstalledPaletteNativeGDI; - pScreenPriv->pwinInstallColormap = winInstallColormapNativeGDI; - pScreenPriv->pwinStoreColors = winStoreColorsNativeGDI; - pScreenPriv->pwinCreateColormap = winCreateColormapNativeGDI; - pScreenPriv->pwinDestroyColormap = winDestroyColormapNativeGDI; - pScreenPriv->pwinHotKeyAltTab = (winHotKeyAltTabProcPtr) (void (*)(void))NoopDDA; - - return TRUE; + winScreenPriv(pScreen); + winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; + + /* Set our pointers */ + pScreenPriv->pwinAllocateFB = winAllocateFBNativeGDI; + pScreenPriv->pwinFreeFB = winFreeFBNativeGDI; + pScreenPriv->pwinShadowUpdate = winShadowUpdateNativeGDI; + pScreenPriv->pwinInitScreen = winInitScreenNativeGDI; + pScreenPriv->pwinCloseScreen = winCloseScreenNativeGDI; + pScreenPriv->pwinInitVisuals = winInitVisualsNativeGDI; + pScreenPriv->pwinAdjustVideoMode = winAdjustVideoModeNativeGDI; + if (pScreenInfo->fFullScreen) + pScreenPriv->pwinCreateBoundingWindow = + winCreateBoundingWindowFullScreen; + else + pScreenPriv->pwinCreateBoundingWindow = winCreateBoundingWindowWindowed; + pScreenPriv->pwinFinishScreenInit = winFinishScreenInitNativeGDI; + /* + * WARNING: Do not set the BltExposedRegions procedure pointer to anything + * other than NULL until a working painting procedure is in place. + * Else, winWindowProc will get stuck in an infinite loop because + * Windows expects the BeginPaint and EndPaint functions to be called + * before a WM_PAINT message can be removed from the queue. We are + * using NULL here as a signal for winWindowProc that it should + * not signal that the WM_PAINT message has been processed. + */ + pScreenPriv->pwinBltExposedRegions = NULL; + pScreenPriv->pwinActivateApp = winActivateAppNativeGDI; + pScreenPriv->pwinRedrawScreen = winRedrawScreenNativeGDI; + pScreenPriv->pwinRealizeInstalledPalette = + winRealizeInstalledPaletteNativeGDI; + pScreenPriv->pwinInstallColormap = winInstallColormapNativeGDI; + pScreenPriv->pwinStoreColors = winStoreColorsNativeGDI; + pScreenPriv->pwinCreateColormap = winCreateColormapNativeGDI; + pScreenPriv->pwinDestroyColormap = winDestroyColormapNativeGDI; + pScreenPriv->pwinHotKeyAltTab = + (winHotKeyAltTabProcPtr) (void (*)(void)) NoopDDA; + + return TRUE; } |