(svn r129) Fix: no more same multiple resolutions due to incorrect SDL implementation (Tron)
authordominik
Tue, 24 Aug 2004 09:15:09 +0000
changeset 128 28ebd80f6521
parent 127 815ec4d365e2
child 129 df1a60bc0d70
(svn r129) Fix: no more same multiple resolutions due to incorrect SDL implementation (Tron)
sdl.c
--- a/sdl.c	Tue Aug 24 09:09:49 2004 +0000
+++ b/sdl.c	Tue Aug 24 09:15:09 2004 +0000
@@ -243,17 +243,22 @@
 		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;