diff options
author | Melanie | 2010-12-16 20:49:40 +0100 |
---|---|---|
committer | Melanie | 2010-12-16 20:49:40 +0100 |
commit | 835e4dbc2cc5bdeea0bddfef2c15092720f5a10a (patch) | |
tree | cfbebb0cca2278845c437b781adb542539a64904 | |
parent | Remove some spam from FreeSwitchModule (diff) | |
download | opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.zip opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.gz opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.bz2 opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.xz |
Add locks on m_killRecord without breaking things like justin did
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 6a76069..04710f1 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -1529,21 +1529,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1529 | kill.Header.Reliable = true; | 1529 | kill.Header.Reliable = true; |
1530 | kill.Header.Zerocoded = true; | 1530 | kill.Header.Zerocoded = true; |
1531 | 1531 | ||
1532 | if (localIDs.Count == 1) | 1532 | lock (m_killRecord) |
1533 | { | 1533 | { |
1534 | if (m_scene.GetScenePresence(localIDs[0]) != null) | 1534 | if (localIDs.Count == 1) |
1535 | { | 1535 | { |
1536 | OutPacket(kill, ThrottleOutPacketType.State); | 1536 | if (m_scene.GetScenePresence(localIDs[0]) != null) |
1537 | return; | 1537 | { |
1538 | OutPacket(kill, ThrottleOutPacketType.State); | ||
1539 | return; | ||
1540 | } | ||
1541 | m_killRecord.Add(localIDs[0]); | ||
1538 | } | 1542 | } |
1539 | m_killRecord.Add(localIDs[0]); | 1543 | else |
1540 | } | ||
1541 | else | ||
1542 | { | ||
1543 | lock (m_entityUpdates.SyncRoot) | ||
1544 | { | 1544 | { |
1545 | foreach (uint localID in localIDs) | 1545 | lock (m_entityUpdates.SyncRoot) |
1546 | m_killRecord.Add(localID); | 1546 | { |
1547 | foreach (uint localID in localIDs) | ||
1548 | m_killRecord.Add(localID); | ||
1549 | } | ||
1547 | } | 1550 | } |
1548 | } | 1551 | } |
1549 | 1552 | ||
@@ -3615,10 +3618,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3615 | // | 3618 | // |
3616 | // This doesn't appear to apply to child prims - a client will happily ignore these updates | 3619 | // This doesn't appear to apply to child prims - a client will happily ignore these updates |
3617 | // after the root prim has been deleted. | 3620 | // after the root prim has been deleted. |
3618 | if (m_killRecord.Contains(part.LocalId)) | 3621 | lock (m_killRecord) |
3619 | continue; | 3622 | { |
3620 | if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId)) | 3623 | if (m_killRecord.Contains(part.LocalId)) |
3621 | continue; | 3624 | continue; |
3625 | if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId)) | ||
3626 | continue; | ||
3627 | } | ||
3622 | 3628 | ||
3623 | if (part.ParentGroup.IsDeleted) | 3629 | if (part.ParentGroup.IsDeleted) |
3624 | continue; | 3630 | continue; |