diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 3840773af9c..4fd17623fff 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1099,14 +1099,18 @@ public static List GetUUIDsOnData(byte[] s, int indx, int len) /// Is the platform Windows? /// /// true if so, false otherwise + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsWindows() { + return RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + /* PlatformID platformId = Environment.OSVersion.Platform; return (platformId == PlatformID.Win32NT || platformId == PlatformID.Win32S || platformId == PlatformID.Win32Windows || platformId == PlatformID.WinCE); + */ } public static bool LoadArchSpecificWindowsDll(string libraryName) @@ -3100,6 +3104,39 @@ public static bool TryParseHttpRange(string header, out int start, out int end) return false; } + [DllImport("winmm.dll")] + private static extern uint timeBeginPeriod(uint period); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void TimeBeginPeriod(uint period) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + timeBeginPeriod(period); + } + + [DllImport("winmm.dll")] + private static extern uint timeEndPeriod(uint period); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void TimeEndPeriod(uint period) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + timeEndPeriod(period); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void ThreadSleep(int period) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + timeEndPeriod(1); + Thread.Sleep(period); + timeEndPeriod(1); + } + else + Thread.Sleep(period); + } + /// /// Used to trigger an early library load on Windows systems. /// diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 73fc30ce90c..60ff13bd4f5 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -2336,9 +2336,7 @@ private bool CanDoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart s return false; } - bool notSameOwner = srcsog.OwnerID.NotEqual(destsog.OwnerID); - - if(notSameOwner) + if(srcsog.OwnerID.NotEqual(destsog.OwnerID)) { if((itperms & (uint)PermissionMask.Transfer) == 0) return false; @@ -2350,7 +2348,8 @@ private bool CanDoObjectInvToObjectInv(TaskInventoryItem item, SceneObjectPart s } else { - if((destsogEffectiveOwnerPerms & (uint)PermissionMask.Modify) == 0) + if((destsogEffectiveOwnerPerms & (uint)PermissionMask.Modify) == 0 && + (destsog.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.AllowInventoryDrop) == 0) return false; } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index cfed4db2858..6251d3903a1 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -5196,7 +5196,6 @@ public float ScriptExecutionTime() time += e.GetScriptExecutionTime(ids); } } - return time; } catch diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 4284c5304a8..4ac430c8931 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -154,7 +154,7 @@ public Vector3(ReadOnlySpan str) while (++comma < str.Length) { c = Unsafe.Add(ref MemoryMarshal.GetReference(str), comma); - if (c == ' ' || c == '>') + if (c == '>') break; } @@ -575,7 +575,7 @@ public Quaternion(ReadOnlySpan str) while (++comma < str.Length) { c = Unsafe.Add(ref MemoryMarshal.GetReference(str), comma); - if (c == ' ' || c == '>') + if (c == '>') break; }