From e1346b93e110aea1d10e8eda30b2effe2306a8bb Mon Sep 17 00:00:00 2001 From: henry Date: Sat, 2 Nov 2002 18:56:16 +0000 Subject: [PATCH] fix for fs modes on widescreen displays git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8055 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_sdl.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libvo/vo_sdl.c b/libvo/vo_sdl.c index 9d01b82dc9..e911a117b4 100644 --- a/libvo/vo_sdl.c +++ b/libvo/vo_sdl.c @@ -700,15 +700,24 @@ static void set_fullmode (int mode) { screen_surface_h = priv->XHeight; } else if (mode < 0) { - int i; + int i,j,imax; mode = 0; // Default to the biggest mode avaible + if (verbose) for(i=0;priv->fullmodes[i];++i) + printf("SDL Mode: %d: %d x %d\n", i, priv->fullmodes[i]->w, priv->fullmodes[i]->h); for(i = findArrayEnd(priv->fullmodes) - 1; i >=0; i--) { if( (priv->fullmodes[i]->w >= priv->dstwidth) && (priv->fullmodes[i]->h >= priv->dstheight) ) { - mode = i; - break; + imax = i; + for (j = findArrayEnd(priv->fullmodes) - 1; j >=0; j--) { + if (priv->fullmodes[j]->w > priv->fullmodes[imax]->w + && priv->fullmodes[j]->h == priv->fullmodes[imax]->h) + imax = j; + } + mode = imax; + break; + } } - } + if (verbose) printf("SET SDL Mode: %d: %d x %d\n", mode, priv->fullmodes[mode]->w, priv->fullmodes[mode]->h); priv->fullmode = mode; screen_surface_h = priv->fullmodes[mode]->h; screen_surface_w = priv->fullmodes[mode]->w;