diff options
author | Mary <mary@mary.zone> | 2022-09-01 22:27:35 +0200 |
---|---|---|
committer | Mary-nyan <thog@protonmail.com> | 2022-09-07 22:58:41 +0200 |
commit | df99257d7f30f3952ca9e2a1386339777eec3327 (patch) | |
tree | 58166b721944499001930a039859db07de3852d8 | |
parent | f3835dc78bfc845786a38c189929ac8838960018 (diff) |
bsd: improve socket poll1.1.250
We should report errors even when not requested.
This also ensure we only clear the bits that were requested on the output.
Finally, this fix when input events is 0.
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs b/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs index b2414bc1..31d93cad 100644 --- a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs +++ b/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/ManagedSocketPollManager.cs @@ -38,12 +38,13 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd { ManagedSocket socket = (ManagedSocket)evnt.FileDescriptor; - bool isValidEvent = false; + bool isValidEvent = evnt.Data.InputEvents == 0; + + errorEvents.Add(socket.Socket); if ((evnt.Data.InputEvents & PollEventTypeMask.Input) != 0) { readEvents.Add(socket.Socket); - errorEvents.Add(socket.Socket); isValidEvent = true; } @@ -51,7 +52,6 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd if ((evnt.Data.InputEvents & PollEventTypeMask.UrgentInput) != 0) { readEvents.Add(socket.Socket); - errorEvents.Add(socket.Socket); isValidEvent = true; } @@ -59,14 +59,6 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd if ((evnt.Data.InputEvents & PollEventTypeMask.Output) != 0) { writeEvents.Add(socket.Socket); - errorEvents.Add(socket.Socket); - - isValidEvent = true; - } - - if ((evnt.Data.InputEvents & PollEventTypeMask.Error) != 0) - { - errorEvents.Add(socket.Socket); isValidEvent = true; } @@ -93,7 +85,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd { Socket socket = ((ManagedSocket)evnt.FileDescriptor).Socket; - PollEventTypeMask outputEvents = 0; + PollEventTypeMask outputEvents = evnt.Data.OutputEvents & ~evnt.Data.InputEvents; if (errorEvents.Contains(socket)) { |