diff options
author | Melanie | 2012-05-30 00:50:47 +0200 |
---|---|---|
committer | Melanie | 2012-05-30 00:50:47 +0200 |
commit | 4358bb8f850863aec8a519c6f533c298630dc1af (patch) | |
tree | 28cf0ae831bc5eaf2e0813ab740847def9188fef /OpenSim/Region/ClientStack | |
parent | fix physics not reporting collisions only with terrain (diff) | |
download | opensim-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.cs | 50 |
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 && |