From 080afb7809ad9665e6ea37a611e771bae0bec184 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 8 Dec 2006 00:31:32 +0000 Subject: [PATCH] Look for an exact match first when setting a video mode on BeOS. Fixes Bugzilla #370. --- src/video/bwindow/SDL_sysvideo.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/video/bwindow/SDL_sysvideo.cc b/src/video/bwindow/SDL_sysvideo.cc index a7a588168..f17e8977d 100644 --- a/src/video/bwindow/SDL_sysvideo.cc +++ b/src/video/bwindow/SDL_sysvideo.cc @@ -370,12 +370,23 @@ extern "C" (current.timing.h_total * current.timing.v_total); modes = SDL_modelist[((bpp + 7) / 8) - 1]; - for (i = 0; modes[i] && (modes[i]->w > width) && - (modes[i]->h > height); ++i) { - /* still looking */ + + bool exactmatch = false; + for ( uint32 x = 0; modes[x]; x++ ) { + if (modes[x]->w == width && modes[x]->h == height) { + exactmatch = true; + i = x; + break; + } } - if (!modes[i] || (modes[i]->w < width) || (modes[i]->h < height)) { - --i; /* We went too far */ + if (!exactmatch) { + for (i = 0; modes[i] && (modes[i]->w > width) && + (modes[i]->h > height); ++i) { + /* still looking */ + } + if (!modes[i] || (modes[i]->w < width) || (modes[i]->h < height)) { + --i; /* We went too far */ + } } width = modes[i]->w; height = modes[i]->h;