mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 22:05:36 +08:00
Fix to existing ReaderWriterLockSlim implementations
This commit is contained in:
@@ -109,7 +109,10 @@ namespace OpenSim.Framework
|
||||
}
|
||||
else
|
||||
{
|
||||
m_itemLock.ExitReadLock();
|
||||
if (m_itemLock.RecursiveReadCount>0)
|
||||
{
|
||||
m_itemLock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +147,10 @@ namespace OpenSim.Framework
|
||||
}
|
||||
else
|
||||
{
|
||||
m_itemLock.ExitWriteLock();
|
||||
if (m_itemLock.RecursiveWriteCount > 0)
|
||||
{
|
||||
m_itemLock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -126,7 +126,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
else
|
||||
{
|
||||
m_partsLock.ExitReadLock();
|
||||
if (m_partsLock.RecursiveReadCount > 0)
|
||||
{
|
||||
m_partsLock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
public void lockPartsForWrite(bool locked)
|
||||
@@ -155,7 +158,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
else
|
||||
{
|
||||
m_partsLock.ExitWriteLock();
|
||||
if (m_partsLock.RecursiveWriteCount > 0)
|
||||
{
|
||||
m_partsLock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -320,17 +320,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
if (m_items.ContainsKey(itemId))
|
||||
{
|
||||
m_items.LockItemsForRead(false);
|
||||
CreateScriptInstance(m_items[itemId], startParam, postOnRez, engine, stateSource);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_items.LockItemsForRead(false);
|
||||
m_log.ErrorFormat(
|
||||
"[PRIM INVENTORY]: " +
|
||||
"Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2} at {3} in {4}",
|
||||
itemId, m_part.Name, m_part.UUID,
|
||||
m_part.AbsolutePosition, m_part.ParentGroup.Scene.RegionInfo.RegionName);
|
||||
}
|
||||
m_items.LockItemsForRead(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -150,7 +150,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||
}
|
||||
else
|
||||
{
|
||||
m_scriptsLock.ExitReadLock();
|
||||
if (m_scriptsLock.RecursiveReadCount > 0)
|
||||
{
|
||||
m_scriptsLock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void lockScriptsForWrite(bool locked)
|
||||
@@ -179,7 +182,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||
}
|
||||
else
|
||||
{
|
||||
m_scriptsLock.ExitWriteLock();
|
||||
if (m_scriptsLock.RecursiveWriteCount > 0)
|
||||
{
|
||||
m_scriptsLock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user