From 7cd4fa8cf5f51e576aeb866a83649206e37e8483 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 15 Oct 2016 20:26:23 +0100 Subject: [PATCH 1/5] bug fix: We can't filter out any of the avatar controls relative to movement, even if not flying (a condition i incorrectly added recently) in fact the entire AgentUpdates throotling is questionable, since its viewer Job. But keeping it... --- OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 2650be4c88..48cb85edf4 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -6173,8 +6173,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Threshold for body rotation to be a significant agent update // use the abs of cos - private const float QDELTABody = 1.0f - 0.0001f; - private const float QDELTAHead = 1.0f - 0.0001f; + private const float QDELTABody = 1.0f - 0.00005f; + private const float QDELTAHead = 1.0f - 0.00005f; // Threshold for camera rotation to be a significant agent update private const float VDELTA = 0.01f; @@ -6199,8 +6199,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if( (x.ControlFlags != m_thisAgentUpdateArgs.ControlFlags) // significant if control flags changed - || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && - (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly +// || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && +// (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly + || (x.ControlFlags & 0x3f8dfff) != 0 // actually all movement controls need to pass || (x.Flags != m_thisAgentUpdateArgs.Flags) // significant if Flags changed || (x.State != m_thisAgentUpdateArgs.State) // significant if Stats changed || (Math.Abs(x.Far - m_thisAgentUpdateArgs.Far) >= 32) // significant if far distance changed From 954bcbc5efad2a0cf7bf1784d363816a8987fdbb Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 15 Oct 2016 20:44:18 +0100 Subject: [PATCH 2/5] bug fix: let ALL avatar controls have a repeat rate controled by viewer (so as before commit 8a3958ad048535ad4f8a752cbd71d9114e53a42b on this) --- OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 48cb85edf4..fd3f997525 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -6201,7 +6201,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP (x.ControlFlags != m_thisAgentUpdateArgs.ControlFlags) // significant if control flags changed // || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && // (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly - || (x.ControlFlags & 0x3f8dfff) != 0 // actually all movement controls need to pass + || x.ControlFlags != (byte)AgentManager.ControlFlags.NONE// actually all movement controls need to pass || (x.Flags != m_thisAgentUpdateArgs.Flags) // significant if Flags changed || (x.State != m_thisAgentUpdateArgs.State) // significant if Stats changed || (Math.Abs(x.Far - m_thisAgentUpdateArgs.Far) >= 32) // significant if far distance changed From 90be326457160a6f433dea2d544a596f429279e9 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 15 Oct 2016 21:06:17 +0100 Subject: [PATCH 3/5] Xengine option AppDomainLoading default option true is causing problems with several mono versions. Until a fix is found change the default to false, so this is not a major problem for the less technical skilled users. --- bin/OpenSim.ini.example | 6 ++++-- bin/OpenSimDefaults.ini | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 3fe3992093..8fc608da53 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -903,8 +903,10 @@ ;; ;; However, setting this to false will also prevent script DLLs from being unloaded from memory if the script is deleted. ;; This may cause an OutOfMemory problem over time when avatars with scripted attachments move in and out of the region. - ;; Some Windows users have also reported script loading problems when AppDomainLoading = false - ; AppDomainLoading = true + ;; at this time some mono versions seem to have problems with the true option + ;; so default is now false until a fix is found, to simply life of less technical skilled users. + ;; this should only be a issue if regions stay alive for a long time with lots of scripts added or edited. + ; AppDomainLoading = false ;; Controls whether scripts are stopped by aborting their threads externally (abort) or by co-operative checks from the compiled script (co-op) ;; co-op will be more stable but this option is currently experimental. diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 77ba3c81fe..e846e73e0e 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -1690,12 +1690,13 @@ ; Stack size per thread created ThreadStackSize = 262144 - ; Set this to true (the default) to load each script into a separate + ; Set this to true to load each script into a separate ; AppDomain. Setting this to false will load all script assemblies into the - ; current AppDomain, which will reduce the per-script overhead at the - ; expense of reduced security and the inability to garbage collect the - ; script assemblies - AppDomainLoading = true + ; current AppDomain, which will reduce the per-script overhead but deleted scripts stay inactive using memory + ; this may only be a problem if regions stay alive for a long time with lots of scripts added or edited. + ; at this time some mono versions seem to have problems with the true option + ; so default is now false until a fix is found + AppDomainLoading = false ; Controls whether previously compiled scripts DLLs are deleted on sim restart. If you set this to false ; then startup will be considerably faster since scripts won't need to be recompiled. However, then it becomes your responsibility to delete the From eaac332d00b193137b8b8e26b5fa323b6b7b2a55 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 16 Oct 2016 17:33:39 +0100 Subject: [PATCH 4/5] fix a coment on OpenSim.ini.example ( mantis 8037) --- bin/OpenSim.ini.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 8fc608da53..4b83751daf 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -894,7 +894,7 @@ ;; The trade-off may be increased memory usage by the script engine. ; ThreadStackSize = 262144 - ;; Set this to true (the default) to load each script into a separate + ;; Set this to true to load each script into a separate ;; AppDomain. ;; ;; Setting this to false will load all script assemblies into the From 586e4cf163cd68b47fce0b25ee34a0155d41bf4c Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 17 Oct 2016 19:16:07 +0100 Subject: [PATCH 5/5] ignore prims with shape type none on max size check for physics --- .../Framework/Scenes/SceneObjectGroup.cs | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 53a9441896..e643db7436 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -3869,15 +3869,11 @@ namespace OpenSim.Region.Framework.Scenes for (int i = 0; i < parts.Length; i++) { SceneObjectPart part = parts[i]; - if (part.Scale.X > m_scene.m_maxPhys || - part.Scale.Y > m_scene.m_maxPhys || - part.Scale.Z > m_scene.m_maxPhys ) - { - UsePhysics = false; // Reset physics - break; - } - if (checkShape && part.PhysicsShapeType != (byte)PhysicsShapeType.None) + if(part.PhysicsShapeType == (byte)PhysicsShapeType.None) + continue; // assuming root type was checked elsewhere + + if (checkShape) { if (--maxprims < 0) { @@ -3885,6 +3881,14 @@ namespace OpenSim.Region.Framework.Scenes break; } } + + if (part.Scale.X > m_scene.m_maxPhys || + part.Scale.Y > m_scene.m_maxPhys || + part.Scale.Z > m_scene.m_maxPhys ) + { + UsePhysics = false; // Reset physics + break; + } } }