From 0b5f312b204140750f61235e13014e5c81e52fc3 Mon Sep 17 00:00:00 2001 From: LotP <22-lotp@users.noreply.git.ryujinx.app> Date: Sat, 11 Oct 2025 07:47:45 -0500 Subject: [PATCH] Sync thread name on Schedule After commit 51ca73cb, using a non-blocking socket (e.g. poll(..., timeout=0)) will still result in a blocking socket. It appears the above commit inverted the behavior. This merge request fixes the blocking flag: blocking will be set to false when the flag is 0x800. --- src/Ryujinx.HLE/HOS/Kernel/Threading/KScheduler.cs | 6 ++++++ src/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/Ryujinx.HLE/HOS/Kernel/Threading/KScheduler.cs b/src/Ryujinx.HLE/HOS/Kernel/Threading/KScheduler.cs index 5c3b95dd6..9fa05ffc8 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Threading/KScheduler.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Threading/KScheduler.cs @@ -296,6 +296,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading KThread currentThread = KernelStatic.GetCurrentThread(); KThread selectedThread = _state.SelectedThread; + if (!currentThread.IsThreadNamed && currentThread.GetThreadName() != "") + { + currentThread.HostThread.Name = $"<{currentThread.GetThreadName()}>"; + currentThread.IsThreadNamed = true; + } + // If the thread is already scheduled and running on the core, we have nothing to do. if (currentThread == selectedThread) { diff --git a/src/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs b/src/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs index 04fe82ce3..cb001ef0f 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs @@ -52,6 +52,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading public ulong AffinityMask { get; set; } public ulong ThreadUid { get; private set; } + + public bool IsThreadNamed { get; set; } private long _totalTimeRunning;