From 1eea7786bc34fbb08ee711bfc13575c3006eb092 Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 11 Feb 2011 19:54:42 +0100 Subject: [PATCH] Should fix possible error where game can hang for prolonged time on exit. --- autosave.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autosave.c b/autosave.c index cd5baf814c..6e0fdd79ec 100644 --- a/autosave.c +++ b/autosave.c @@ -62,7 +62,8 @@ static int autosave_thread(void *data) } SDL_mutexP(save->cond_lock); - SDL_CondWaitTimeout(save->cond, save->cond_lock, save->interval * 1000); + if (!save->quit) + SDL_CondWaitTimeout(save->cond, save->cond_lock, save->interval * 1000); SDL_mutexV(save->cond_lock); } @@ -108,7 +109,9 @@ void autosave_unlock(autosave_t *handle) void autosave_free(autosave_t *handle) { + SDL_mutexP(handle->cond_lock); handle->quit = true; + SDL_mutexV(handle->cond_lock); SDL_CondSignal(handle->cond); SDL_WaitThread(handle->thread, NULL);