aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules')
-rw-r--r--OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs22
1 files changed, 17 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
index 48c7717..003ca8e 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
@@ -50,6 +50,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
50 private bool m_Gridmode = false; 50 private bool m_Gridmode = false;
51 private List<Scene> m_Scenes = new List<Scene>(); 51 private List<Scene> m_Scenes = new List<Scene>();
52 52
53 private Dictionary<UUID, Scene> m_RootAgents =
54 new Dictionary<UUID, Scene>();
55
53 public event PresenceChange OnPresenceChange; 56 public event PresenceChange OnPresenceChange;
54 public event BulkPresenceData OnBulkPresenceData; 57 public event BulkPresenceData OnBulkPresenceData;
55 58
@@ -69,10 +72,6 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
69 72
70 lock (m_Scenes) 73 lock (m_Scenes)
71 { 74 {
72 if (m_Scenes.Count == 0)
73 {
74 }
75
76 if (m_Gridmode) 75 if (m_Gridmode)
77 NotifyMessageServerOfStartup(scene); 76 NotifyMessageServerOfStartup(scene);
78 77
@@ -119,10 +118,23 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
119 118
120 public void OnConnectionClosed(IClientAPI client) 119 public void OnConnectionClosed(IClientAPI client)
121 { 120 {
121 if (!(client.Scene is Scene))
122 return;
123
124 if (!(m_RootAgents.ContainsKey(client.AgentId)))
125 return;
126
127 Scene scene = (Scene)client.Scene;
128
129 if (m_RootAgents[client.AgentId] != scene)
130 return;
131
132 m_RootAgents.Remove(client.AgentId);
122 } 133 }
123 134
124 public void OnSetRootAgentScene(UUID agentID) 135 public void OnSetRootAgentScene(UUID agentID, Scene scene)
125 { 136 {
137 m_RootAgents[agentID] = scene;
126 } 138 }
127 139
128 private void NotifyMessageServerOfStartup(Scene scene) 140 private void NotifyMessageServerOfStartup(Scene scene)