aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs26
1 files changed, 15 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 9e6ed91..5bc6631 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -390,7 +390,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
390 390
391 if (sp.PresenceType != PresenceType.Npc) 391 if (sp.PresenceType != PresenceType.Npc)
392 { 392 {
393 m_log.DebugFormat("[ATTACHMENTS MODULE]: enter PrepareScriptInstanceForSave loop");
394 foreach (SceneObjectGroup so in attachments) 393 foreach (SceneObjectGroup so in attachments)
395 { 394 {
396 // Scripts MUST be snapshotted before the object is 395 // Scripts MUST be snapshotted before the object is
@@ -400,18 +399,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
400 // scripts performing attachment operations at the same time. Getting object states stops the scripts. 399 // scripts performing attachment operations at the same time. Getting object states stops the scripts.
401 scriptStates[so] = PrepareScriptInstanceForSave(so, false); 400 scriptStates[so] = PrepareScriptInstanceForSave(so, false);
402 } 401 }
403 }
404 402
405 m_log.DebugFormat("[ATTACHMENTS MODULE]: enter UpdateDetachedObject loop"); 403 lock (sp.AttachmentsSyncLock)
406 lock (sp.AttachmentsSyncLock) 404 {
407 { 405 foreach (SceneObjectGroup so in attachments)
408 foreach (SceneObjectGroup so in attachments) 406 UpdateDetachedObject(sp, so, scriptStates[so]);
409 UpdateDetachedObject(sp, so, scriptStates[so]); 407 sp.ClearAttachments();
410 m_log.DebugFormat("[ATTACHMENTS MODULE]: enter ClearAttachments"); 408 }
411 sp.ClearAttachments();
412 } 409 }
413 m_log.DebugFormat("[ATTACHMENTS MODULE]: derez done"); 410 else
414 411 {
412 lock (sp.AttachmentsSyncLock)
413 {
414 foreach (SceneObjectGroup so in attachments)
415 UpdateDetachedObject(sp, so, String.Empty);
416 sp.ClearAttachments();
417 }
418 }
415 } 419 }
416 420
417 public void DeleteAttachmentsFromScene(IScenePresence sp, bool silent) 421 public void DeleteAttachmentsFromScene(IScenePresence sp, bool silent)