From: Michal Januszewski <[EMAIL PROTECTED]> Currently, if a perfect match in terms of resolution is not found, fb_find_mode() only looks for a best-fit mode among modes with a higher resolution than the one requested. Thus, if the user requests a resolution higher than the largest supported one, they are dropped to the default mode (usually a low resolution one).
Change this behaviour so that the true closest match in terms of the city-block metric is returned. Signed-off-by: Michal Januszewski <[EMAIL PROTECTED]> --- diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c index 08d0725..bc29ef3 100644 --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -655,15 +655,15 @@ done: best = -1; DPRINTK("Trying best-fit modes\n"); for (i = 0; i < dbsize; i++) { - if (xres <= db[i].xres && yres <= db[i].yres) { DPRINTK("Trying %ix%i\n", db[i].xres, db[i].yres); if (!fb_try_mode(var, info, &db[i], bpp)) { - if (diff > (db[i].xres - xres) + (db[i].yres - yres)) { - diff = (db[i].xres - xres) + (db[i].yres - yres); - best = i; - } + if (diff > abs(db[i].xres - xres) + + abs(db[i].yres - yres)) { + diff = abs(db[i].xres - xres) + + abs(db[i].yres - yres); + best = i; + } } - } } if (best != -1) { fb_try_mode(var, info, &db[best], bpp); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/