(svn r18796) -Fix [FS#3521]: [SDL] possible deadlock when killing OpenTTD while starting it
This commit is contained in:
@@ -112,8 +112,11 @@ static void DrawSurfaceToScreen()
|
|||||||
|
|
||||||
static void DrawSurfaceToScreenThread(void *)
|
static void DrawSurfaceToScreenThread(void *)
|
||||||
{
|
{
|
||||||
/* First wait till we 'may' start */
|
/* First tell the main thread we're started */
|
||||||
_draw_mutex->BeginCritical();
|
_draw_mutex->BeginCritical();
|
||||||
|
_draw_mutex->SendSignal();
|
||||||
|
|
||||||
|
/* Now wait for the first thing to draw! */
|
||||||
_draw_mutex->WaitForSignal();
|
_draw_mutex->WaitForSignal();
|
||||||
|
|
||||||
while (_draw_continue) {
|
while (_draw_continue) {
|
||||||
@@ -516,6 +519,9 @@ void VideoDriver_SDL::MainLoop()
|
|||||||
if (!_draw_threaded) {
|
if (!_draw_threaded) {
|
||||||
_draw_mutex->EndCritical();
|
_draw_mutex->EndCritical();
|
||||||
delete _draw_mutex;
|
delete _draw_mutex;
|
||||||
|
} else {
|
||||||
|
/* Wait till the draw mutex has started itself. */
|
||||||
|
_draw_mutex->WaitForSignal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user