aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs37
1 files changed, 20 insertions, 17 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index d354ef0..09b91c0 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -230,8 +230,19 @@ namespace OpenSim.Region.Framework.Scenes
230 /// </summary> 230 /// </summary>
231 private int m_LastLogin; 231 private int m_LastLogin;
232 232
233 private Thread HeartbeatThread; 233 /// <summary>
234 private volatile bool shuttingdown; 234 /// Thread that runs the scene loop.
235 /// </summary>
236 private Thread m_heartbeatThread;
237
238 /// <summary>
239 /// True if these scene is in the process of shutting down or is shutdown.
240 /// </summary>
241 public bool ShuttingDown
242 {
243 get { return m_shuttingDown; }
244 }
245 private volatile bool m_shuttingDown;
235 246
236// private int m_lastUpdate; 247// private int m_lastUpdate;
237// private bool m_firstHeartbeat = true; 248// private bool m_firstHeartbeat = true;
@@ -811,11 +822,6 @@ namespace OpenSim.Region.Framework.Scenes
811 822
812 #region Startup / Close Methods 823 #region Startup / Close Methods
813 824
814 public bool ShuttingDown
815 {
816 get { return shuttingdown; }
817 }
818
819 /// <value> 825 /// <value>
820 /// The scene graph for this scene 826 /// The scene graph for this scene
821 /// </value> 827 /// </value>
@@ -1134,8 +1140,7 @@ namespace OpenSim.Region.Framework.Scenes
1134 ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); }); 1140 ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); });
1135 1141
1136 // Stop updating the scene objects and agents. 1142 // Stop updating the scene objects and agents.
1137 //m_heartbeatTimer.Close(); 1143 m_shuttingDown = true;
1138 shuttingdown = true;
1139 1144
1140 m_log.Debug("[SCENE]: Persisting changed objects"); 1145 m_log.Debug("[SCENE]: Persisting changed objects");
1141 EventManager.TriggerSceneShuttingDown(this); 1146 EventManager.TriggerSceneShuttingDown(this);
@@ -1168,14 +1173,14 @@ namespace OpenSim.Region.Framework.Scenes
1168 //m_heartbeatTimer.Enabled = true; 1173 //m_heartbeatTimer.Enabled = true;
1169 //m_heartbeatTimer.Interval = (int)(m_timespan * 1000); 1174 //m_heartbeatTimer.Interval = (int)(m_timespan * 1000);
1170 //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); 1175 //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat);
1171 if (HeartbeatThread != null) 1176 if (m_heartbeatThread != null)
1172 { 1177 {
1173 HeartbeatThread.Abort(); 1178 m_heartbeatThread.Abort();
1174 HeartbeatThread = null; 1179 m_heartbeatThread = null;
1175 } 1180 }
1176// m_lastUpdate = Util.EnvironmentTickCount(); 1181// m_lastUpdate = Util.EnvironmentTickCount();
1177 1182
1178 HeartbeatThread 1183 m_heartbeatThread
1179 = Watchdog.StartThread( 1184 = Watchdog.StartThread(
1180 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false); 1185 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false);
1181 } 1186 }
@@ -1222,9 +1227,7 @@ namespace OpenSim.Region.Framework.Scenes
1222 // alarms for scenes with many objects. 1227 // alarms for scenes with many objects.
1223 Update(1); 1228 Update(1);
1224 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true; 1229 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
1225 1230 Update(-1);
1226 while (!shuttingdown)
1227 Update(-1);
1228 1231
1229// m_lastUpdate = Util.EnvironmentTickCount(); 1232// m_lastUpdate = Util.EnvironmentTickCount();
1230// m_firstHeartbeat = false; 1233// m_firstHeartbeat = false;
@@ -1252,7 +1255,7 @@ namespace OpenSim.Region.Framework.Scenes
1252 List<Vector3> coarseLocations; 1255 List<Vector3> coarseLocations;
1253 List<UUID> avatarUUIDs; 1256 List<UUID> avatarUUIDs;
1254 1257
1255 while (!shuttingdown && (endFrame == null || Frame < endFrame)) 1258 while (!m_shuttingDown && (endFrame == null || Frame < endFrame))
1256 { 1259 {
1257 maintc = Util.EnvironmentTickCount(); 1260 maintc = Util.EnvironmentTickCount();
1258 ++Frame; 1261 ++Frame;