58 #include <X11/Xatom.h> 59 #include <X11/keysym.h> 62 #include <X11/extensions/Xrandr.h> 63 #else // USE_RANDR_EXT 64 #include <X11/extensions/xf86vmode.h> 65 #endif // USE_RANDR_EXT 88 #endif //USE_RANDR_EXT 129 const char* displayName;
130 displayName = getenv(
"DISPLAY");
132 displayName =
":0.0";
139 GfOut(
"failed to open display '%s'", XDisplayName( displayName ) );
155 printf(
"Randr version: %d.%d\n", major, minor);
157 #else //USE_RANDR_EXT 160 printf(
"Xxf86vm version: %d.%d\n", major, minor);
162 #endif //USE_RANDR_EXT 179 if (screenconfig != NULL) {
180 SizeID size = XRRConfigCurrentConfiguration (screenconfig, &
fgDisplay.rotation);
182 XRRScreenSize *sizes = XRRConfigSizes(screenconfig, &nsize);
185 fgDisplay.rate = XRRConfigCurrentRate(screenconfig);
187 XRRFreeScreenConfigInfo(screenconfig);
191 #else //USE_RANDR_EXT 192 XF86VidModeGetModeLine(
198 #endif //USE_RANDR_EXT 209 if (screenconfig != NULL) {
211 XRRScreenSize *sizes = XRRConfigSizes(screenconfig, &nsize);
214 for (size = 0; size < nsize; size++) {
221 Status status = RRSetConfigFailed;
222 status = XRRSetScreenConfigAndRate(
232 if (status == RRSetConfigSuccess) {
236 XRRUpdateConfiguration(&ev);
237 }
while ((ev.type != ConfigureNotify) && ((ev.type -
fgDisplay.
event_base) != RRScreenChangeNotify));
240 XRRFreeScreenConfigInfo(screenconfig);
244 #else //USE_RANDR_EXT 248 XF86VidModeModeInfo** displayModes;
249 int i, displayModesCount;
254 XF86VidModeGetAllModeLines(
264 for( i=0; i<displayModesCount; i++ ) {
301 #endif //USE_RANDR_EXT 304 #ifndef USE_RANDR_EXT 316 #endif //USE_RANDR_EXT 325 if (screenconfig != NULL) {
327 XRRScreenSize *sizes = XRRConfigSizes(screenconfig, &nsize);
330 for (size = 0; size < nsize; size++) {
338 XRRFreeScreenConfigInfo(screenconfig);
343 short *rates = XRRConfigRates(screenconfig, size, &nrate);
345 for (rate = 0; rate < nrate; rate++) {
353 XRRFreeScreenConfigInfo(screenconfig);
359 Status status = RRSetConfigFailed;
360 status = XRRSetScreenConfigAndRate(
370 XRRFreeScreenConfigInfo(screenconfig);
372 if (status == RRSetConfigSuccess) {
376 XRRUpdateConfiguration(&ev);
377 }
while ((ev.type != ConfigureNotify) && ((ev.type -
fgDisplay.
event_base) != RRScreenChangeNotify));
388 #else //USE_RANDR_EXT 392 XF86VidModeModeInfo** displayModes;
393 int i, displayModesCount;
398 XF86VidModeGetAllModeLines(
408 for( i=0; i<displayModesCount; i++ )
411 int refresh = displayModes[ i ]->dotclock*1000/(displayModes[ i ]->htotal*displayModes[ i ]->vtotal);
421 if ((i == 0) || (XF86VidModeSwitchToMode(
424 displayModes[ i ]) > 0))
426 XF86VidModeSetViewPort(
459 #endif //USE_RANDR_EXT 472 int width = 640, height = 480, depth = 16,
refresh = 72;
480 if( sscanf(
string,
"%ix%i:%i@%i", &width, &height, &depth, &
refresh ) != 4 )
481 if( sscanf(
string,
"%ix%i:%i", &width, &height, &depth ) != 3 )
482 if( sscanf(
string,
"%ix%i@%i", &width, &height, &
refresh ) != 3 )
483 if( sscanf(
string,
"%ix%i", &width, &height ) != 2 )
484 if( sscanf(
string,
":%i@%i", &depth, &
refresh ) != 2 )
485 if( sscanf(
string,
":%i", &depth ) != 1 )
486 if( sscanf(
string,
"@%i", &
refresh ) != 1 )
487 GfOut(
"unable to parse game mode string `%s'",
string );
514 GfOut(
"failed to change screen settings" );
void fglutLeaveGameMode(void)
static void fghRestoreState(void)
static void fgInitialize(void)
static int fghCheckDisplayMode(int width, int height, int depth, int refresh)
The Gaming Framework API (client part).
static int fghChangeDisplayMode(int)
static SFG_Display fgDisplay
int refresh(tSituation *s)
void fglutGameModeString(const char *string)
int fglutEnterGameMode(void)
static void fghRememberState(void)
XF86VidModeModeLine DisplayMode