Fix bug where region ready was being triggered twice in quick succession if a region contained no scripts.

0.7.4.1
Justin Clark-Casey (justincc) 2012-07-18 22:09:20 +01:00
parent 4973fddc51
commit 58b72933c8
1 changed files with 12 additions and 9 deletions

View File

@ -1488,22 +1488,25 @@ namespace OpenSim.Region.Framework.Scenes
IConfig startupConfig = m_config.Configs["Startup"]; IConfig startupConfig = m_config.Configs["Startup"];
if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false)) if (startupConfig == null || !startupConfig.GetBoolean("StartDisabled", false))
{ {
// This handles a case of a region having no scripts for the RegionReady module if (LoginLock)
if (m_sceneGraph.GetActiveScriptsCount() == 0)
{ {
// need to be able to tell these have changed in RegionReady // This handles a case of a region having no scripts for the RegionReady module
LoginLock = false; if (m_sceneGraph.GetActiveScriptsCount() == 0)
EventManager.TriggerLoginsEnabled(this); {
// XXX: need to be able to tell these have changed in RegionReady, since it will not
// detect a scenario where the region has no scripts - it's listening to the
// script compile queue.
EventManager.TriggerLoginsEnabled(this);
}
} }
else
// For RegionReady lockouts
if (!LoginLock)
{ {
m_log.InfoFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); m_log.InfoFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName);
LoginsDisabled = false; LoginsDisabled = false;
EventManager.TriggerLoginsEnabled(this);
EventManager.TriggerRegionReady(this); EventManager.TriggerRegionReady(this);
} }
m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo); m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo);
} }
else else