From: Eero P. <epa...@ko...> - 2003-05-11 16:46:51
|
freeglut on Windows doesn't seem to take into account the refresh rate which is specified for gamemode. I suspect that there are some problems in this area. So I made a change which does not _require_ a match for the refresh rate, but it first tries to find one. Any comments on this? (patch attached) Eero Index: freeglut_gamemode.c =================================================================== RCS file: /cvsroot/freeglut/freeglut/freeglut/freeglut-1.3/freeglut_gamemode.c,v retrieving revision 1.6 diff -c -r1.6 freeglut_gamemode.c *** freeglut_gamemode.c 23 Mar 2003 16:21:14 -0000 1.6 --- freeglut_gamemode.c 11 May 2003 16:39:58 -0000 *************** *** 255,270 **** /* * Enumerate the available display modes */ while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE ) { /* * Does the enumerated display mode match the user's preferences? */ if( fghCheckDisplayMode( devMode.dmPelsWidth, devMode.dmPelsHeight, ! devMode.dmBitsPerPel, fgState.GameModeRefresh ) ) { ! /* * OKi, we've found a matching display mode, remember its number and break */ mode = displayModes; --- 255,274 ---- /* * Enumerate the available display modes + * Try to get a complete match */ + + + while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE ) { /* * Does the enumerated display mode match the user's preferences? */ if( fghCheckDisplayMode( devMode.dmPelsWidth, devMode.dmPelsHeight, ! devMode.dmBitsPerPel, devMode.dmDisplayFrequency ) ) { ! /* * OKi, we've found a matching display mode, remember its number and break */ mode = displayModes; *************** *** 275,280 **** --- 279,313 ---- * Switch to the next display mode, if any */ displayModes++; + } + + if( mode == 0xffffffff ) + { + /* then try without Display Frequency */ + displayModes=0; + + /* + * Enumerate the available display modes + */ + while( EnumDisplaySettings( NULL, displayModes, &devMode ) == TRUE ) + { + /* then try without Display Frequency */ + + if( fghCheckDisplayMode( devMode.dmPelsWidth, devMode.dmPelsHeight, + devMode.dmBitsPerPel, fgState.GameModeRefresh)) + { + /* + * OKi, we've found a matching display mode, remember its number and break + */ + mode = displayModes; + break; + } + + /* + * Switch to the next display mode, if any + */ + displayModes++; + } } /* |