X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_gamemode.c;h=3172dfc2f7278afffdd3dc7b5d190e544c932538;hb=e951e2cfe0617bda21fed114494095137925ff6e;hp=5f8faad1dbd07fbecb409948ed21c3a4d9ec44c6;hpb=6d46097d532c3c09537423f2a701717d390a3f05;p=freeglut diff --git a/src/freeglut_gamemode.c b/src/freeglut_gamemode.c index 5f8faad..3172dfc 100644 --- a/src/freeglut_gamemode.c +++ b/src/freeglut_gamemode.c @@ -46,7 +46,7 @@ */ static void fghRememberState( void ) { -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 /* * This highly depends on the XFree86 extensions, @@ -101,7 +101,7 @@ static void fghRememberState( void ) */ # endif -#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE +#elif TARGET_HOST_MS_WINDOWS /* DEVMODE devMode; */ @@ -110,7 +110,7 @@ static void fghRememberState( void ) /* hack to get around my stupid cross-gcc headers */ #define FREEGLUT_ENUM_CURRENT_SETTINGS -1 - EnumDisplaySettings( NULL, FREEGLUT_ENUM_CURRENT_SETTINGS, + EnumDisplaySettings( fgDisplay.DisplayName, FREEGLUT_ENUM_CURRENT_SETTINGS, &fgDisplay.DisplayMode ); /* Make sure we will be restoring all settings needed */ @@ -125,7 +125,7 @@ static void fghRememberState( void ) */ static void fghRestoreState( void ) { -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # ifdef X_XF86VidModeGetAllModeLines /* Restore the remembered pointer position: */ @@ -202,15 +202,15 @@ static void fghRestoreState( void ) */ # endif -#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE +#elif TARGET_HOST_MS_WINDOWS /* Restore the previously rememebered desktop display settings */ - ChangeDisplaySettings( &fgDisplay.DisplayMode, 0 ); + ChangeDisplaySettingsEx( fgDisplay.DisplayName,&fgDisplay.DisplayMode, 0,0,0 ); #endif } -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 #ifdef X_XF86VidModeGetAllModeLines /* @@ -257,7 +257,7 @@ static int fghCheckDisplayModes( GLboolean exactMatch, int displayModesCount, XF static GLboolean fghChangeDisplayMode( GLboolean haveToTest ) { GLboolean success = GL_FALSE; -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 /* * This highly depends on the XFree86 extensions, @@ -316,14 +316,14 @@ static GLboolean fghChangeDisplayMode( GLboolean haveToTest ) # endif -#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE +#elif TARGET_HOST_MS_WINDOWS DEVMODE devMode; char *fggmstr = NULL; success = GL_FALSE; - EnumDisplaySettings( NULL, -1, &devMode ); + EnumDisplaySettings( fgDisplay.DisplayName, -1, &devMode ); devMode.dmFields |= DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY; devMode.dmPelsWidth = fgState.GameModeSize.X; @@ -332,13 +332,13 @@ static GLboolean fghChangeDisplayMode( GLboolean haveToTest ) devMode.dmDisplayFrequency = fgState.GameModeRefresh; devMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY; - switch ( ChangeDisplaySettingsEx(NULL, &devMode, NULL, haveToTest ? CDS_TEST : CDS_FULLSCREEN , NULL) ) + switch ( ChangeDisplaySettingsEx(fgDisplay.DisplayName, &devMode, NULL, haveToTest ? CDS_TEST : CDS_FULLSCREEN , NULL) ) { case DISP_CHANGE_SUCCESSFUL: success = GL_TRUE; /* update vars in case if windows switched to proper mode */ - EnumDisplaySettings( NULL, FREEGLUT_ENUM_CURRENT_SETTINGS, &devMode ); + EnumDisplaySettings( fgDisplay.DisplayName, FREEGLUT_ENUM_CURRENT_SETTINGS, &devMode ); fgState.GameModeSize.X = devMode.dmPelsWidth; fgState.GameModeSize.Y = devMode.dmPelsHeight; fgState.GameModeDepth = devMode.dmBitsPerPel; @@ -410,6 +410,8 @@ void FGAPIENTRY glutGameModeString( const char* string ) fgState.GameModeRefresh = refresh; } + + /* * Enters the game mode */ @@ -429,17 +431,16 @@ int FGAPIENTRY glutEnterGameMode( void ) } fgStructure.GameModeWindow = fgCreateWindow( - NULL, "FREEGLUT", 0, 0, - fgState.GameModeSize.X, fgState.GameModeSize.Y, GL_TRUE, GL_FALSE + NULL, "FREEGLUT", GL_TRUE, 0, 0, + GL_TRUE, fgState.GameModeSize.X, fgState.GameModeSize.Y, + GL_TRUE, GL_FALSE ); fgStructure.GameModeWindow->State.Width = fgState.GameModeSize.X; fgStructure.GameModeWindow->State.Height = fgState.GameModeSize.Y; fgStructure.GameModeWindow->State.NeedToResize = GL_TRUE; - fgStructure.GameModeWindow->State.IsGameMode = GL_TRUE; - -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 /* * Sync needed to avoid a real race, the Xserver must have really created @@ -541,12 +542,10 @@ void FGAPIENTRY glutLeaveGameMode( void ) freeglut_return_if_fail( fgStructure.GameModeWindow ); - fgStructure.GameModeWindow->State.IsGameMode = GL_FALSE; - fgAddToWindowDestroyList( fgStructure.GameModeWindow ); fgStructure.GameModeWindow = NULL; -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 XUngrabPointer( fgDisplay.Display, CurrentTime ); XUngrabKeyboard( fgDisplay.Display, CurrentTime );