From 52e5b513ed9dc143c967c733423fe751e1b663d1 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sat, 31 Oct 2015 16:31:43 -0400 Subject: Fix Lua scripting synchronization For several years now, the lua script lock has been completely broken. This commit fixes the main issue (creation of a temporary rather than scoped object), and fixes a subsequent deadlock issue caused by nested script API calls by adding support for recursive mutexes. --- src/script/cpp_api/s_base.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/script/cpp_api/s_base.h') diff --git a/src/script/cpp_api/s_base.h b/src/script/cpp_api/s_base.h index 20f4bc11b..d30373ce1 100644 --- a/src/script/cpp_api/s_base.h +++ b/src/script/cpp_api/s_base.h @@ -28,6 +28,7 @@ extern "C" { } #include "irrlichttypes.h" +#include "threads.h" #include "threading/mutex.h" #include "threading/mutex_auto_lock.h" #include "common/c_types.h" @@ -111,7 +112,8 @@ protected: std::string m_last_run_mod; bool m_secure; #ifdef SCRIPTAPI_LOCK_DEBUG - bool m_locked; + int m_lock_recursion_count; + threadid_t m_owning_thread; #endif private: -- cgit v1.2.3