From ce0f8a7bcd77d910554768c790f9f5103697da6a Mon Sep 17 00:00:00 2001 From: dominik Date: Tue, 24 Aug 2004 09:15:09 +0000 Subject: [PATCH] (svn r129) Fix: no more same multiple resolutions due to incorrect SDL implementation (Tron) --- sdl.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sdl.c b/sdl.c index f12dbde306..6fea23c06e 100644 --- a/sdl.c +++ b/sdl.c @@ -243,17 +243,22 @@ static void GetVideoModes(void) { memcpy(_resolutions, default_resolutions, sizeof(default_resolutions)); _num_resolutions = sizeof(default_resolutions) / (sizeof(uint16)*2); } else { - int n = 0, w = 0, h = 0; + int n = 0; for(i = 0; modes[i]; i++) { - if(w == modes[i]->w && h == modes[i]->h) continue; // don't show same resolutions multiple times - w = modes[i]->w; - h = modes[i]->h; + int w = modes[i]->w; + int h = modes[i]->h; if (IS_INT_INSIDE(w, 640, MAX_SCREEN_WIDTH+1) && IS_INT_INSIDE(h, 480, MAX_SCREEN_HEIGHT+1) && w%8 == 0 && h%8 == 0) { // disable screen resolutions which are not multiples of 8 - _resolutions[n][0] = w; - _resolutions[n][1] = h; - if (++n == sizeof(_resolutions) / (sizeof(uint16)*2)) break; + int j; + for (j = 0; j < n; ++j) + if (_resolutions[j][0] == w && _resolutions[j][1] == h) + break; + if (j == n) { + _resolutions[n][0] = w; + _resolutions[n][1] = h; + if (++n == sizeof(_resolutions) / (sizeof(uint16)*2)) break; + } } } _num_resolutions = n;