Fixed bug #217
Sort the DirectX video modes largest to smallest --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401730
This commit is contained in:
parent
a74719991c
commit
3a0d72c6e5
3 changed files with 16 additions and 3 deletions
|
@ -348,7 +348,6 @@ int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||
#endif
|
||||
}
|
||||
/* Sort the mode lists */
|
||||
if( i > 1 )
|
||||
for ( i=0; i<NUM_MODELISTS; ++i ) {
|
||||
if ( SDL_nummodes[i] > 0 ) {
|
||||
SDL_qsort(SDL_modelist[i], SDL_nummodes[i], sizeof *SDL_modelist[i], cmpmodes);
|
||||
|
@ -361,7 +360,7 @@ int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||
// because SDL surface conversion is much faster than the WinCE one.
|
||||
// Although it should be tested on devices with graphics accelerator.
|
||||
|
||||
DIB_AddMode(this, vformat->BitsPerPixel,
|
||||
DIB_AddMode(this, vformat->BitsPerPixel,
|
||||
GetDeviceCaps(GetDC(NULL), HORZRES),
|
||||
GetDeviceCaps(GetDC(NULL), VERTRES));
|
||||
|
||||
|
|
|
@ -636,6 +636,16 @@ VideoBootStrap DIRECTX_bootstrap = {
|
|||
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)
|
||||
{
|
||||
SDL_VideoDevice *this = (SDL_VideoDevice *)udata;
|
||||
|
@ -955,6 +965,10 @@ int DX5_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||
SDL_modelist[i][j] = &rect->r;
|
||||
}
|
||||
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 */
|
||||
|
|
|
@ -617,7 +617,7 @@ int X11_GetVideoModes(_THIS)
|
|||
|
||||
}
|
||||
/* 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 */
|
||||
|
||||
use_xrandr = xrandr_major * 100 + xrandr_minor;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue