[*] WaitMultipleLoopSourcesEx (any) fixes
This commit is contained in:
parent
634eb35959
commit
e62a99777f
@ -126,7 +126,18 @@ namespace Aurora::IO::Loop
|
||||
AuUInt lastHandle {};
|
||||
bool wasTriggered {};
|
||||
|
||||
// first handle in group
|
||||
if (source->Singular())
|
||||
{
|
||||
auto handle = source->GetHandle();
|
||||
if ((firstTriggered == handle) ||
|
||||
(bAllowOthers && WaitForSingleObject(reinterpret_cast<HANDLE>(handle), 0) == WAIT_OBJECT_0))
|
||||
{
|
||||
lastHandle = handle;
|
||||
wasTriggered = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const auto &handle : source->GetHandles())
|
||||
{
|
||||
if ((firstTriggered == handle) ||
|
||||
@ -134,7 +145,8 @@ namespace Aurora::IO::Loop
|
||||
{
|
||||
lastHandle = handle;
|
||||
wasTriggered = true;
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -375,7 +375,10 @@ namespace Aurora::IO::Loop
|
||||
{
|
||||
bZeroTick |= bool(signalTemp.size());
|
||||
AuUInt32 uTimeoutMS {};
|
||||
bool bTooMany {};
|
||||
|
||||
do
|
||||
{
|
||||
if (uTimeoutEnd)
|
||||
{
|
||||
auto uStartTime = Time::SteadyClockNS();
|
||||
@ -391,7 +394,6 @@ namespace Aurora::IO::Loop
|
||||
}
|
||||
}
|
||||
|
||||
bool bTooMany {};
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
if (AuBuild::kCurrentVendor == AuBuild::EVendor::eGenericMicrosoft &&
|
||||
lsList2.size() < MAXIMUM_WAIT_OBJECTS)
|
||||
@ -415,6 +417,8 @@ namespace Aurora::IO::Loop
|
||||
{
|
||||
bTooMany = true;
|
||||
}
|
||||
}
|
||||
while (!bTimedout && !bTooMany && signaled.empty());
|
||||
|
||||
if (bTooMany)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user