[*] Fix latency and internal tick wakeup filtering regressions in: 57c5515173
This commit is contained in:
parent
436d50a01f
commit
fb1f53a930
@ -765,7 +765,7 @@ namespace Aurora::IO::UNIX
|
||||
|
||||
do
|
||||
{
|
||||
if (timeout && !bAgain)
|
||||
if (timeout && timeout != -1 && !bAgain)
|
||||
{
|
||||
AuUInt64 uTimeNow = AuTime::SteadyClockNS();
|
||||
if (uTargetTime <= uTimeNow)
|
||||
@ -782,7 +782,7 @@ namespace Aurora::IO::UNIX
|
||||
{
|
||||
break;
|
||||
}
|
||||
temp = io_getevents(io->context, 1, uCount, ioEvents, timeout ? &targetTime : nullptr, false);
|
||||
temp = io_getevents(io->context, 1, uCount, ioEvents, timeout && timeout != -1 ? &targetTime : nullptr, false);
|
||||
|
||||
if (temp >= 0)
|
||||
{
|
||||
@ -840,7 +840,7 @@ namespace Aurora::IO::UNIX
|
||||
}
|
||||
}
|
||||
}
|
||||
while ((timeout ? !bEpollTriggered : false));
|
||||
while ((timeout ? !(bEpollTriggered || toProcessDone) : false));
|
||||
|
||||
exit:
|
||||
bAgain = false;
|
||||
@ -886,6 +886,10 @@ namespace Aurora::IO::UNIX
|
||||
{
|
||||
return epoll_wait(epfd, events, maxevents, 0);
|
||||
}
|
||||
else if (bRet && toProcessDone)
|
||||
{
|
||||
goto redo;
|
||||
}
|
||||
else if (bRet)
|
||||
{
|
||||
return 0;
|
||||
@ -988,7 +992,7 @@ namespace Aurora::IO::UNIX
|
||||
|
||||
do
|
||||
{
|
||||
if (timeout && !bTryAgain)
|
||||
if (timeout && timeout != -1 && !bTryAgain)
|
||||
{
|
||||
AuUInt64 uTimeNow = AuTime::SteadyClockNS();
|
||||
if (uTargetTime <= uTimeNow)
|
||||
@ -1074,7 +1078,7 @@ namespace Aurora::IO::UNIX
|
||||
}
|
||||
|
||||
}
|
||||
while (timeout ? (!bReadTriggered && !bWriteTriggered) : false);
|
||||
while (timeout ? !(bWriteTriggered || bReadTriggered || toProcessDone) : false);
|
||||
|
||||
exit:
|
||||
bTryAgain = false;
|
||||
@ -1131,7 +1135,18 @@ namespace Aurora::IO::UNIX
|
||||
}
|
||||
}
|
||||
|
||||
return bRet;
|
||||
if (bReadTriggered || bWriteTriggered)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (bRet && toProcessDone)
|
||||
{
|
||||
goto redo;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool LinuxOverlappedWaitForAtleastOne(AuUInt32 timeout, const AuList<AuUInt> &handles, const AuList<AuUInt> &handlesWrite, AuUInt &one, AuUInt &two)
|
||||
|
Loading…
Reference in New Issue
Block a user