mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 09:45:47 +08:00
Move conditionals which control whether a task is placed in the JobEngine inside Watchdog.RunJob() (renamed from RunWhenPossible) and generalize them.
This commit is contained in:
@@ -1228,15 +1228,11 @@ 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)
|
||||
{
|
||||
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), null, "ScenePresence.RezAttachmentsOnLogin");
|
||||
Watchdog.RunJob(
|
||||
"RezAttachments",
|
||||
o => Scene.AttachmentsModule.RezAttachments(this),
|
||||
string.Format("Rez attachments for {0} in {1}", Name, Scene.Name),
|
||||
null);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1258,18 +1254,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
if (attachments.Count > 0)
|
||||
{
|
||||
if (Watchdog.JobEngine.IsRunning)
|
||||
{
|
||||
Watchdog.RunWhenPossible(
|
||||
"StartAttachmentScripts",
|
||||
o => RestartAttachmentScripts(attachments),
|
||||
string.Format("Start attachment scripts for {0} in {1}", Name, Scene.Name),
|
||||
null);
|
||||
}
|
||||
else
|
||||
{
|
||||
RestartAttachmentScripts(attachments);
|
||||
}
|
||||
Watchdog.RunJob(
|
||||
"StartAttachmentScripts",
|
||||
o => RestartAttachmentScripts(attachments),
|
||||
string.Format("Start attachment scripts for {0} in {1}", Name, Scene.Name),
|
||||
null,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1825,18 +1815,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// XXX: If we force an update after activity has completed, then multiple attachments do appear correctly on a destination region
|
||||
// If we do it a little bit earlier (e.g. when converting the child to a root agent) then this does not work.
|
||||
// This may be due to viewer code or it may be something we're not doing properly simulator side.
|
||||
if (Watchdog.JobEngine.IsRunning)
|
||||
{
|
||||
Watchdog.RunWhenPossible(
|
||||
"ScheduleAttachmentsForFullUpdate",
|
||||
o => ScheduleAttachmentsForFullUpdate(),
|
||||
string.Format("Schedule attachments for full update for {0} in {1}", Name, Scene.Name),
|
||||
null);
|
||||
}
|
||||
else
|
||||
{
|
||||
ScheduleAttachmentsForFullUpdate();
|
||||
}
|
||||
Watchdog.RunJob(
|
||||
"ScheduleAttachmentsForFullUpdate",
|
||||
o => ScheduleAttachmentsForFullUpdate(),
|
||||
string.Format("Schedule attachments for full update for {0} in {1}", Name, Scene.Name),
|
||||
null,
|
||||
true);
|
||||
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms",
|
||||
@@ -3391,7 +3375,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
SentInitialDataToClient = true;
|
||||
|
||||
// Send all scene object to the new client
|
||||
Watchdog.RunWhenPossible("SendInitialDataToClient", delegate
|
||||
Watchdog.RunJob("SendInitialDataToClient", delegate
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE PRESENCE]: Sending initial data to {0} agent {1} in {2}, tp flags {3}",
|
||||
@@ -3409,7 +3393,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (e != null && e is SceneObjectGroup)
|
||||
((SceneObjectGroup)e).SendFullUpdateToClient(ControllingClient);
|
||||
}
|
||||
}, string.Format("SendInitialDataToClient ({0} in {1})", Name, Scene.Name), null);
|
||||
}, string.Format("SendInitialDataToClient ({0} in {1})", Name, Scene.Name),null, false, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -4073,14 +4057,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// We don't need to worry about a race condition as the job to later start the scripts is also
|
||||
// JobEngine scheduled and so will always occur after this task.
|
||||
// XXX: This will not be true if JobEngine ever gets more than one thread.
|
||||
if (Watchdog.JobEngine.IsRunning)
|
||||
Watchdog.RunWhenPossible(
|
||||
"CopyAttachments",
|
||||
o => Scene.AttachmentsModule.CopyAttachments(cAgent, this),
|
||||
string.Format("Copy attachments for {0} entering {1}", Name, Scene.Name),
|
||||
null);
|
||||
else
|
||||
Scene.AttachmentsModule.CopyAttachments(cAgent, this);
|
||||
Watchdog.RunJob(
|
||||
"CopyAttachments",
|
||||
o => Scene.AttachmentsModule.CopyAttachments(cAgent, this),
|
||||
string.Format("Copy attachments for {0} entering {1}", Name, Scene.Name),
|
||||
null,
|
||||
true);
|
||||
}
|
||||
|
||||
// This must occur after attachments are copied or scheduled to be copied, as it releases the CompleteMovement() calling thread
|
||||
|
||||
Reference in New Issue
Block a user