diff --git a/OpenSim/Framework/Monitoring/Watchdog.cs b/OpenSim/Framework/Monitoring/Watchdog.cs index b00aa5c16b..ebbf095919 100644 --- a/OpenSim/Framework/Monitoring/Watchdog.cs +++ b/OpenSim/Framework/Monitoring/Watchdog.cs @@ -133,7 +133,7 @@ namespace OpenSim.Framework.Monitoring /// /summary> public static event Action OnWatchdogTimeout; - private static JobEngine m_jobEngine; + public static JobEngine JobEngine { get; private set; } /// /// Is this watchdog active? @@ -175,7 +175,7 @@ namespace OpenSim.Framework.Monitoring static Watchdog() { - m_jobEngine = new JobEngine(); + JobEngine = new JobEngine(); m_threads = new Dictionary(); m_watchdogTimer = new System.Timers.Timer(WATCHDOG_INTERVAL_MS); m_watchdogTimer.AutoReset = false; @@ -463,8 +463,8 @@ namespace OpenSim.Framework.Monitoring return; } - if (m_jobEngine.IsRunning) - m_jobEngine.QueueRequest(name, callback, obj); + if (JobEngine.IsRunning) + JobEngine.QueueRequest(name, callback, obj); else RunInThread(callback, name, obj, log); } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 2718785127..afe6daa19a 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1228,10 +1228,14 @@ namespace OpenSim.Region.Framework.Scenes // viewers without (e.g. v1 viewers) will not, so we still need to make this call. if (Scene.AttachmentsModule != null) { - Util.FireAndForget(o => - { - Scene.AttachmentsModule.RezAttachments(this); - }); + if (Watchdog.JobEngine.IsRunning) + Watchdog.RunWhenPossible( + "RezAttachments", + o => Scene.AttachmentsModule.RezAttachments(this), + string.Format("Rez attachments for {0} in {1}", Name, Scene.Name), + null); + else + Util.FireAndForget(o => Scene.AttachmentsModule.RezAttachments(this)); } } else