aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMary <mary@mary.zone>2022-09-01 22:27:35 +0200
committerMary-nyan <thog@protonmail.com>2022-09-07 22:58:41 +0200
commitdf99257d7f30f3952ca9e2a1386339777eec3327 (patch)
tree58166b721944499001930a039859db07de3852d8
parentf3835dc78bfc845786a38c189929ac8838960018 (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.cs16
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))
{