(svn r16699) -Fix [FS#3001]: if SDL fails to allocate a surface due to it being too large (and SDL doesn't crash!) fall back to another video driver.

This commit is contained in:
rubidium 2009-06-30 12:36:24 +00:00
parent 6ce7df1153
commit 231626f98c

View File

@ -426,11 +426,14 @@ const char *VideoDriver_SDL::Start(const char * const *parm)
const char *s = SdlOpen(SDL_INIT_VIDEO); const char *s = SdlOpen(SDL_INIT_VIDEO);
if (s != NULL) return s; if (s != NULL) return s;
GetVideoModes();
if (!CreateMainSurface(_cur_resolution.width, _cur_resolution.height)) {
return SDL_CALL SDL_GetError();
}
SDL_CALL SDL_VideoDriverName(buf, 30); SDL_CALL SDL_VideoDriverName(buf, 30);
DEBUG(driver, 1, "SDL: using driver '%s'", buf); DEBUG(driver, 1, "SDL: using driver '%s'", buf);
GetVideoModes();
CreateMainSurface(_cur_resolution.width, _cur_resolution.height);
MarkWholeScreenDirty(); MarkWholeScreenDirty();
SDL_CALL SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); SDL_CALL SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);