X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_gamemode.c;h=09e38ab53fc4f4c24fd556e5c5fadd8e7fdec3a0;hb=48c513d508f6836e1fcbaa68ac2e0f2f9a486852;hp=41b241b8e321aec78ca60f1b206757e4d58f20fb;hpb=ef7b4087e528297b33da63643d494bd5d8689867;p=freeglut diff --git a/src/freeglut_gamemode.c b/src/freeglut_gamemode.c index 41b241b..09e38ab 100644 --- a/src/freeglut_gamemode.c +++ b/src/freeglut_gamemode.c @@ -29,7 +29,7 @@ #include "config.h" #endif -#include "../include/GL/freeglut.h" +#include #include "freeglut_internal.h" /* @@ -89,7 +89,7 @@ void fghRememberState( void ) /* * Query the current display settings: */ - fgDisplay.DisplayModeValid = + fgDisplay.DisplayModeValid = XF86VidModeGetModeLine( fgDisplay.Display, fgDisplay.Screen, @@ -101,13 +101,16 @@ void fghRememberState( void ) fgWarning( "Runtime use of XF86VidModeGetModeLine failed.\n" ); # else -# warning fghRememberState: missing XFree86 video mode extensions, game mode will not change screen resolution when activated + /* + * XXX warning fghRememberState: missing XFree86 video mode extensions, + * XXX game mode will not change screen resolution when activated + */ # endif -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE /* DEVMODE devMode; */ - + /* * Grab the current desktop settings... */ @@ -195,10 +198,13 @@ void fghRestoreState( void ) } # else -# warning fghRestoreState: missing XFree86 video mode extensions, game mode will not change screen resolution when activated + /* + * XXX warning fghRestoreState: missing XFree86 video mode extensions, + * XXX game mode will not change screen resolution when activated + */ # endif -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE /* * Restore the previously rememebered desktop display settings @@ -282,10 +288,13 @@ GLboolean fghChangeDisplayMode( GLboolean haveToTest ) return GL_FALSE; # else -# warning fghChangeDisplayMode: missing XFree86 video mode extensions, game mode will not change screen resolution when activated + /* + * XXX warning fghChangeDisplayMode: missing XFree86 video mode extensions, + * XXX game mode will not change screen resolution when activated + */ # endif -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE unsigned int displayModes = 0, mode = 0xffffffff; GLboolean success = GL_FALSE; @@ -423,11 +432,13 @@ int FGAPIENTRY glutEnterGameMode( void ) return FALSE; } - fgStructure.GameMode = fgCreateWindow( + fgStructure.GameMode = fgCreateWindow( NULL, "FREEGLUT", 0, 0, fgState.GameModeSize.X, fgState.GameModeSize.Y, GL_TRUE, GL_FALSE ); + fgStructure.GameMode->State.IsGameMode = GL_TRUE; + #if TARGET_HOST_UNIX_X11 /* Move the window up to the topleft corner */ @@ -442,7 +453,7 @@ int FGAPIENTRY glutEnterGameMode( void ) /* Move the Pointer to the middle of the fullscreen window */ XWarpPointer( fgDisplay.Display, - None, + None, fgDisplay.RootWindow, 0, 0, 0, 0, fgState.GameModeSize.X/2, fgState.GameModeSize.Y/2 @@ -465,7 +476,7 @@ int FGAPIENTRY glutEnterGameMode( void ) GrabModeAsync, GrabModeAsync, fgStructure.GameMode->Window.Handle, None, CurrentTime) ) usleep( 100 ); - + /* * Change input focus to the new window. This will exit the application * if the new window is not viewable yet, see the XGrabPointer loop above. @@ -534,8 +545,12 @@ void FGAPIENTRY glutLeaveGameMode( void ) { freeglut_return_if_fail( fgStructure.GameMode ); + fgStructure.GameMode->State.IsGameMode = GL_FALSE; + fgAddToWindowDestroyList( fgStructure.GameMode ); + fgStructure.GameMode = NULL ; + #if TARGET_HOST_UNIX_X11 XUngrabPointer( fgDisplay.Display, CurrentTime );