Commit 3a0d72c6 authored by Sam Lantinga's avatar Sam Lantinga

Fixed bug #217

Sort the DirectX video modes largest to smallest

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401730
parent a7471999
...@@ -348,7 +348,6 @@ int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat) ...@@ -348,7 +348,6 @@ int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat)
#endif #endif
} }
/* Sort the mode lists */ /* Sort the mode lists */
if( i > 1 )
for ( i=0; i<NUM_MODELISTS; ++i ) { for ( i=0; i<NUM_MODELISTS; ++i ) {
if ( SDL_nummodes[i] > 0 ) { if ( SDL_nummodes[i] > 0 ) {
SDL_qsort(SDL_modelist[i], SDL_nummodes[i], sizeof *SDL_modelist[i], cmpmodes); SDL_qsort(SDL_modelist[i], SDL_nummodes[i], sizeof *SDL_modelist[i], cmpmodes);
......
...@@ -636,6 +636,16 @@ VideoBootStrap DIRECTX_bootstrap = { ...@@ -636,6 +636,16 @@ VideoBootStrap DIRECTX_bootstrap = {
DX5_Available, DX5_CreateDevice DX5_Available, DX5_CreateDevice
}; };
static int cmpmodes(const void *va, const void *vb)
{
SDL_Rect *a = *(SDL_Rect **)va;
SDL_Rect *b = *(SDL_Rect **)vb;
if ( a->w == b->w )
return b->h - a->h;
else
return b->w - a->w;
}
static HRESULT WINAPI EnumModes2(DDSURFACEDESC *desc, VOID *udata) static HRESULT WINAPI EnumModes2(DDSURFACEDESC *desc, VOID *udata)
{ {
SDL_VideoDevice *this = (SDL_VideoDevice *)udata; SDL_VideoDevice *this = (SDL_VideoDevice *)udata;
...@@ -955,6 +965,10 @@ int DX5_VideoInit(_THIS, SDL_PixelFormat *vformat) ...@@ -955,6 +965,10 @@ int DX5_VideoInit(_THIS, SDL_PixelFormat *vformat)
SDL_modelist[i][j] = &rect->r; SDL_modelist[i][j] = &rect->r;
} }
SDL_modelist[i][j] = NULL; SDL_modelist[i][j] = NULL;
if ( SDL_nummodes[i] > 0 ) {
SDL_qsort(SDL_modelist[i], SDL_nummodes[i], sizeof *SDL_modelist[i], cmpmodes);
}
} }
/* Fill in some window manager capabilities */ /* Fill in some window manager capabilities */
......
...@@ -617,7 +617,7 @@ int X11_GetVideoModes(_THIS) ...@@ -617,7 +617,7 @@ int X11_GetVideoModes(_THIS)
} }
/* sort the mode list descending as SDL expects */ /* sort the mode list descending as SDL expects */
qsort(SDL_modelist, nsizes, sizeof *SDL_modelist, cmpmodelist); SDL_qsort(SDL_modelist, nsizes, sizeof *SDL_modelist, cmpmodelist);
SDL_modelist[i] = NULL; /* terminator */ SDL_modelist[i] = NULL; /* terminator */
use_xrandr = xrandr_major * 100 + xrandr_minor; use_xrandr = xrandr_major * 100 + xrandr_minor;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment