(svn r26351) -Fix: Protect all VideoDriver_SDL methods with the _draw_mutex.

This commit is contained in:
frosch 2014-02-16 21:57:22 +00:00
parent 179d70fe16
commit 44003f0bae

View File

@ -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 */