diff options
-rw-r--r-- | sdl.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -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; |