Date: Mon, 24 Feb 2003 16:31:25 -0500
From: Ragnvald "Despair" Maartmann-Moe IV Subject: SDL x11 video mode selection bug Hi, I've found an oddity with video mode selection. I recently added a bunch of oddball video modes to my XF86Config, to support weird resolutions xine & mplayer need if I don't want to beat my cpu up with video scaling. Since adding them, SDL started picking the biggest video mode it could find that matched the height constraint. Getting a narrow vertical strip of QuakeForge (I code for the project, so needless to say it's my favorite test) in the middle of an 800x480 screen, instead of the 640x480 I asked for annoys me tremendously. So here's a patch that tries a bit harder to get an exact match. I didn't touch the XiG section, since I can't test that, but I'd bet a similar patch would prevent similar problems there. --Ragnvald "Despair" Maartmann-Moe IV --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40605
This commit is contained in:
parent
53598ce435
commit
bb0214c5a3
1 changed files with 6 additions and 0 deletions
|
@ -112,11 +112,17 @@ static void set_best_resolution(_THIS, int width, int height)
|
||||||
modes[i]->hdisplay, modes[i]->vdisplay);
|
modes[i]->hdisplay, modes[i]->vdisplay);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
for ( i = nmodes-1; i > 0 ; --i ) {
|
||||||
|
if ( (modes[i]->hdisplay == width) &&
|
||||||
|
(modes[i]->vdisplay == height) )
|
||||||
|
goto match;
|
||||||
|
}
|
||||||
for ( i = nmodes-1; i > 0 ; --i ) {
|
for ( i = nmodes-1; i > 0 ; --i ) {
|
||||||
if ( (modes[i]->hdisplay >= width) &&
|
if ( (modes[i]->hdisplay >= width) &&
|
||||||
(modes[i]->vdisplay >= height) )
|
(modes[i]->vdisplay >= height) )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
match:
|
||||||
if ( (modes[i]->hdisplay != mode.hdisplay) ||
|
if ( (modes[i]->hdisplay != mode.hdisplay) ||
|
||||||
(modes[i]->vdisplay != mode.vdisplay) ) {
|
(modes[i]->vdisplay != mode.vdisplay) ) {
|
||||||
SDL_NAME(XF86VidModeSwitchToMode)(SDL_Display, SDL_Screen, modes[i]);
|
SDL_NAME(XF86VidModeSwitchToMode)(SDL_Display, SDL_Screen, modes[i]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue