Changeset - r21263:87b7f54217b8
[Not reviewed]
master
0 1 0
frosch - 10 years ago 2014-02-16 21:57:22
frosch@openttd.org
(svn r26351) -Fix: Protect all VideoDriver_SDL methods with the _draw_mutex.
1 file changed with 13 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/video/sdl_v.cpp
Show inline comments
 
@@ -817,27 +817,34 @@ void VideoDriver_SDL::MainLoop()
 

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

	
 
bool VideoDriver_SDL::ToggleFullscreen(bool fullscreen)
 
{
 
	if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true);
 
	_fullscreen = fullscreen;
 
	GetVideoModes(); // get the list of available video modes
 
	if (_num_resolutions == 0 || !CreateMainSurface(_cur_resolution.width, _cur_resolution.height)) {
 
	bool ret = _num_resolutions != 0 && CreateMainSurface(_cur_resolution.width, _cur_resolution.height);
 

	
 
	if (!ret) {
 
		/* switching resolution failed, put back full_screen to original status */
 
		_fullscreen ^= true;
 
		return false;
 
	}
 
	return true;
 

	
 
	if (_draw_mutex != NULL) _draw_mutex->EndCritical(true);
 
	return ret;
 
}
 

	
 
bool VideoDriver_SDL::AfterBlitterChange()
 
{
 
	return CreateMainSurface(_screen.width, _screen.height);
 
	if (_draw_mutex != NULL) _draw_mutex->BeginCritical(true);
 
	bool ret = CreateMainSurface(_screen.width, _screen.height);
 
	if (_draw_mutex != NULL) _draw_mutex->EndCritical(true);
 
	return ret;
 
}
 

	
 
#endif /* WITH_SDL */
0 comments (0 inline, 0 general)