aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
authorMelanie2012-05-30 00:50:47 +0200
committerMelanie2012-05-30 00:50:47 +0200
commit4358bb8f850863aec8a519c6f533c298630dc1af (patch)
tree28cf0ae831bc5eaf2e0813ab740847def9188fef /OpenSim/Region/ClientStack
parent fix physics not reporting collisions only with terrain (diff)
downloadopensim-SC_OLD-4358bb8f850863aec8a519c6f533c298630dc1af.zip
opensim-SC_OLD-4358bb8f850863aec8a519c6f533c298630dc1af.tar.gz
opensim-SC_OLD-4358bb8f850863aec8a519c6f533c298630dc1af.tar.bz2
opensim-SC_OLD-4358bb8f850863aec8a519c6f533c298630dc1af.tar.xz
Fix the log standing attach-from-world bug.
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs50
1 files changed, 32 insertions, 18 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 2d46a5b..5912a15 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -3761,24 +3761,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3761 { 3761 {
3762 SceneObjectPart part = (SceneObjectPart)update.Entity; 3762 SceneObjectPart part = (SceneObjectPart)update.Entity;
3763 3763
3764 // Please do not remove this unless you can demonstrate on the OpenSim mailing list that a client
3765 // will never receive an update after a prim kill. Even then, keeping the kill record may be a good
3766 // safety measure.
3767 //
3768 // If a Linden Lab 1.23.5 client (and possibly later and earlier) receives an object update
3769 // after a kill, it will keep displaying the deleted object until relog. OpenSim currently performs
3770 // updates and kills on different threads with different scheduling strategies, hence this protection.
3771 //
3772 // This doesn't appear to apply to child prims - a client will happily ignore these updates
3773 // after the root prim has been deleted.
3774 lock (m_killRecord)
3775 {
3776 if (m_killRecord.Contains(part.LocalId))
3777 continue;
3778 if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId))
3779 continue;
3780 }
3781
3782 if (part.ParentGroup.IsDeleted) 3764 if (part.ParentGroup.IsDeleted)
3783 continue; 3765 continue;
3784 3766
@@ -3816,7 +3798,39 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3816 // attachments until the avatar becomes root. 3798 // attachments until the avatar becomes root.
3817 if (sp.IsChildAgent) 3799 if (sp.IsChildAgent)
3818 continue; 3800 continue;
3801
3802 // If the object is an attachment we don't want it to be in the kill
3803 // record. Else attaching from inworld and subsequently dropping
3804 // it will no longer work.
3805 lock (m_killRecord)
3806 {
3807 m_killRecord.Remove(part.LocalId);
3808 m_killRecord.Remove(part.ParentGroup.RootPart.LocalId);
3809 }
3819 } 3810 }
3811 else
3812 {
3813 // Please do not remove this unless you can demonstrate on the OpenSim mailing list that a client
3814 // will never receive an update after a prim kill. Even then, keeping the kill record may be a good
3815 // safety measure.
3816 //
3817 // If a Linden Lab 1.23.5 client (and possibly later and earlier) receives an object update
3818 // after a kill, it will keep displaying the deleted object until relog. OpenSim currently performs
3819 // updates and kills on different threads with different scheduling strategies, hence this protection.
3820 //
3821 // This doesn't appear to apply to child prims - a client will happily ignore these updates
3822 // after the root prim has been deleted.
3823 //
3824 // We ignore this for attachments because attaching something from inworld breaks unless we do.
3825 lock (m_killRecord)
3826 {
3827 if (m_killRecord.Contains(part.LocalId))
3828 continue;
3829 if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId))
3830 continue;
3831 }
3832 }
3833
3820 if (part.ParentGroup.IsAttachment && m_disableFacelights) 3834 if (part.ParentGroup.IsAttachment && m_disableFacelights)
3821 { 3835 {
3822 if (part.ParentGroup.RootPart.Shape.State != (byte)AttachmentPoint.LeftHand && 3836 if (part.ParentGroup.RootPart.Shape.State != (byte)AttachmentPoint.LeftHand &&