Changeset - r13995:533559bea3ff
[Not reviewed]
master
0 1 0
rubidium - 14 years ago 2009-12-19 19:29:01
rubidium@openttd.org
(svn r18547) -Fix [FS#3388]: missing thread synchronisation when changing the resolution for SDL via the in game menu
1 file changed with 6 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/video/sdl_v.cpp
Show inline comments
 
@@ -469,7 +469,7 @@ static int PollEvent()
 
		case SDL_VIDEORESIZE: {
 
			int w = max(ev.resize.w, 64);
 
			int h = max(ev.resize.h, 64);
 
			ChangeResInGame(w, h);
 
			CreateMainSurface(w, h);
 
			break;
 
		}
 
	}
 
@@ -627,14 +627,17 @@ void VideoDriver_SDL::MainLoop()
 

	
 
bool VideoDriver_SDL::ChangeResolution(int w, int h)
 
{
 
	return CreateMainSurface(w, h);
 
	if (_draw_threaded) _draw_mutex->BeginCritical();
 
	bool ret = CreateMainSurface(w, h);
 
	if (_draw_threaded) _draw_mutex->EndCritical();
 
	return ret;
 
}
 

	
 
bool VideoDriver_SDL::ToggleFullscreen(bool fullscreen)
 
{
 
	_fullscreen = fullscreen;
 
	GetVideoModes(); // get the list of available video modes
 
	if (_num_resolutions == 0 || !this->ChangeResolution(_cur_resolution.width, _cur_resolution.height)) {
 
	if (_num_resolutions == 0 || !CreateMainSurface(_cur_resolution.width, _cur_resolution.height)) {
 
		/* switching resolution failed, put back full_screen to original status */
 
		_fullscreen ^= true;
 
		return false;
0 comments (0 inline, 0 general)