mirror of
https://github.com/glest/glest-source.git
synced 2025-08-22 16:02:50 +02:00
- attempt a better video recovery when selected mode and colour bits fail
This commit is contained in:
@@ -115,17 +115,35 @@ void PlatformContextGl::init(int colorBits, int depthBits, int stencilBits,bool
|
||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] error [%s]\n",__FILE__,__FUNCTION__,__LINE__,msg.str().c_str());
|
||||
|
||||
for(int i = 32; i >= 8; i-=8) {
|
||||
// try to revert to 800x600
|
||||
screen = SDL_SetVideoMode(800, 600, i, flags);
|
||||
if(screen == 0) {
|
||||
// try to revert to 640x480
|
||||
screen = SDL_SetVideoMode(640, 480, i, flags);
|
||||
if(screen == 0) {
|
||||
throw std::runtime_error(msg.str());
|
||||
// try different color bits
|
||||
screen = SDL_SetVideoMode(resW, resH, i, flags);
|
||||
if(screen != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(screen == 0) {
|
||||
for(int i = 32; i >= 8; i-=8) {
|
||||
// try to revert to 800x600
|
||||
screen = SDL_SetVideoMode(800, 600, i, flags);
|
||||
if(screen != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//throw std::runtime_error(msg.str());
|
||||
if(screen == 0) {
|
||||
for(int i = 32; i >= 8; i-=8) {
|
||||
// try to revert to 640x480
|
||||
screen = SDL_SetVideoMode(640, 480, i, flags);
|
||||
if(screen != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(screen == 0) {
|
||||
throw std::runtime_error(msg.str());
|
||||
}
|
||||
}
|
||||
|
||||
SDL_WM_GrabInput(SDL_GRAB_OFF);
|
||||
|
Reference in New Issue
Block a user