Skip to content

Commit

Permalink
[citizen:scripting:core] replace std::mutex with std::recursive_mutex…
Browse files Browse the repository at this point in the history
… for m_scriptRuntimesLock (fixes INVOKE_FUNCTION_REFERENCE not working from side a Lua tick)
  • Loading branch information
nta committed Nov 30, 2015
1 parent 7b1a65d commit bdd94d7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class ResourceScriptingComponent : public fwRefCountable

std::map<int32_t, fx::OMPtr<IScriptRuntime>> m_scriptRuntimes;

std::mutex m_scriptRuntimesLock;
std::recursive_mutex m_scriptRuntimesLock;

private:
void CreateEnvironments();
Expand All @@ -37,14 +37,14 @@ class ResourceScriptingComponent : public fwRefCountable

inline void AddRuntime(OMPtr<IScriptRuntime> runtime)
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

m_scriptRuntimes.insert({ runtime->GetInstanceId(), runtime });
}

inline OMPtr<IScriptRuntime> GetRuntimeById(int32_t instanceId)
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

auto it = m_scriptRuntimes.find(instanceId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ ResourceScriptingComponent::ResourceScriptingComponent(Resource* resource)
OMPtr<IScriptRuntime> ptr;
if (SUCCEEDED(environment.As(&ptr)))
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

ptr->SetParentObject(resource);

Expand All @@ -93,7 +93,7 @@ ResourceScriptingComponent::ResourceScriptingComponent(Resource* resource)

resource->OnTick.Connect([=] ()
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

for (auto& environment : m_scriptRuntimes)
{
Expand All @@ -108,7 +108,7 @@ ResourceScriptingComponent::ResourceScriptingComponent(Resource* resource)

resource->OnStop.Connect([=] ()
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

for (auto& environment : m_scriptRuntimes)
{
Expand All @@ -123,7 +123,7 @@ OMPtr<IScriptHost> GetScriptHostForResource(Resource* resource);

void ResourceScriptingComponent::CreateEnvironments()
{
std::unique_lock<std::mutex> lock(m_scriptRuntimesLock);
std::unique_lock<std::recursive_mutex> lock(m_scriptRuntimesLock);

m_scriptHost = GetScriptHostForResource(m_resource);

Expand Down

0 comments on commit bdd94d7

Please sign in to comment.