diff --git a/src/SharpEmu.Core/Cpu/Native/DirectExecutionBackend.cs b/src/SharpEmu.Core/Cpu/Native/DirectExecutionBackend.cs index c807f76..442a67b 100644 --- a/src/SharpEmu.Core/Cpu/Native/DirectExecutionBackend.cs +++ b/src/SharpEmu.Core/Cpu/Native/DirectExecutionBackend.cs @@ -5757,18 +5757,21 @@ public sealed unsafe partial class DirectExecutionBackend : INativeCpuBackend, I return true; } + private static readonly bool LegacyGuestPriorities = + string.Equals(Environment.GetEnvironmentVariable("SHARPEMU_GUEST_PRIORITY"), "legacy", StringComparison.OrdinalIgnoreCase); + private static ThreadPriority MapGuestThreadPriority(int priority) { if (priority <= 478) { - return ThreadPriority.Highest; + return LegacyGuestPriorities ? ThreadPriority.Highest : ThreadPriority.Normal; } if (priority >= 733) { return ThreadPriority.Lowest; } - return ThreadPriority.Normal; + return LegacyGuestPriorities ? ThreadPriority.Normal : ThreadPriority.BelowNormal; } private void ApplyGuestThreadAffinity(ulong guestAffinityMask)