Messages in this thread Patch in this message | | | Date | Wed, 18 Jul 2007 10:41:02 +0200 | From | Michal Januszewski <> | Subject | [PATCH] fbdev: find mode with highest refresh rate in fb_find_mode() |
| |
Currently if the refresh rate is not specified fb_find_mode() returns the first known video mode with the requested resoluion, which provides no guarantees wrt the refresh rate. Change this so that the mode with the highest refresh rate is returned instead.
Signed-off-by: Michal Januszewski <spock@gentoo.org> --- diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c index 3741ad7..f70143a 100644 --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -606,26 +606,29 @@ done: DPRINTK("Trying specified video mode%s %ix%i\n", refresh_specified ? "" : " (ignoring refresh rate)", xres, yres); - diff = refresh; + if (!refresh_specified) + diff = 0 + else + diff = refresh; + best = -1; for (i = 0; i < dbsize; i++) { - if (name_matches(db[i], name, namelen) || - (res_specified && res_matches(db[i], xres, yres))) { - if(!fb_try_mode(var, info, &db[i], bpp)) { - if(!refresh_specified || db[i].refresh == refresh) - return 1; - else { - if(diff > abs(db[i].refresh - refresh)) { - diff = abs(db[i].refresh - refresh); - best = i; - } + if ((name_matches(db[i], name, namelen) || + (res_specified && res_matches(db[i], xres, yres))) && + !fb_try_mode(var, info, &db[i], bpp)) { + if (refresh_specified && db[i].refresh == refresh) { + return 1; + } else { + if (diff < db[i].refresh) { + diff = db[i].refresh; + best = i; } } } } if (best != -1) { fb_try_mode(var, info, &db[best], bpp); - return 2; + return (refresh_specified) ? 2 : 1; } diff = xres + yres;
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |