aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-05-03 18:48:50 +0100
committerJustin Clark-Casey (justincc)2013-05-03 18:48:50 +0100
commit304c5d4a8b8a1137bac18f7f6443ea85cec86184 (patch)
tree33833264d210694546b17447a5f42f010084b0ad /OpenSim/Region/Framework/Scenes
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-304c5d4a8b8a1137bac18f7f6443ea85cec86184.zip
opensim-SC-304c5d4a8b8a1137bac18f7f6443ea85cec86184.tar.gz
opensim-SC-304c5d4a8b8a1137bac18f7f6443ea85cec86184.tar.bz2
opensim-SC-304c5d4a8b8a1137bac18f7f6443ea85cec86184.tar.xz
On startup, start scenes after we're set up all local scenes, rather than starting scenes before others have been created.
This aims to avoid a race condition where scenes could look to inform neighbours that they were up before those neighbours had been created. http://opensimulator.org/mantis/view.php?id=6618
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs16
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneBase.cs4
2 files changed, 18 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 829a7e9..4f674a3 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -389,10 +389,12 @@ namespace OpenSim.Region.Framework.Scenes
389 if (value) 389 if (value)
390 { 390 {
391 if (!m_active) 391 if (!m_active)
392 Start(); 392 Start(false);
393 } 393 }
394 else 394 else
395 { 395 {
396 // This appears assymetric with Start() above but is not - setting m_active = false stops the loops
397 // XXX: Possibly this should be in an explicit Stop() method for symmetry.
396 m_active = false; 398 m_active = false;
397 } 399 }
398 } 400 }
@@ -1331,10 +1333,18 @@ namespace OpenSim.Region.Framework.Scenes
1331 } 1333 }
1332 } 1334 }
1333 1335
1336 public override void Start()
1337 {
1338 Start(true);
1339 }
1340
1334 /// <summary> 1341 /// <summary>
1335 /// Start the scene 1342 /// Start the scene
1336 /// </summary> 1343 /// </summary>
1337 public void Start() 1344 /// <param name='startScripts'>
1345 /// Start the scripts within the scene.
1346 /// </param>
1347 public void Start(bool startScripts)
1338 { 1348 {
1339 m_active = true; 1349 m_active = true;
1340 1350
@@ -1353,6 +1363,8 @@ namespace OpenSim.Region.Framework.Scenes
1353 m_heartbeatThread 1363 m_heartbeatThread
1354 = Watchdog.StartThread( 1364 = Watchdog.StartThread(
1355 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false); 1365 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false);
1366
1367 StartScripts();
1356 } 1368 }
1357 1369
1358 /// <summary> 1370 /// <summary>
diff --git a/OpenSim/Region/Framework/Scenes/SceneBase.cs b/OpenSim/Region/Framework/Scenes/SceneBase.cs
index d3e968e..d2097ea 100644
--- a/OpenSim/Region/Framework/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneBase.cs
@@ -561,6 +561,10 @@ namespace OpenSim.Region.Framework.Scenes
561 get { return false; } 561 get { return false; }
562 } 562 }
563 563
564 public virtual void Start()
565 {
566 }
567
564 public void Restart() 568 public void Restart()
565 { 569 {
566 // This has to be here to fire the event 570 // This has to be here to fire the event