[*] Local loopsources werent calling the parents OnTrigger
This commit is contained in:
parent
f05cafbff7
commit
b0a7417d6f
@ -57,6 +57,7 @@ namespace Aurora::IO::Loop
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -69,6 +70,7 @@ namespace Aurora::IO::Loop
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ namespace Aurora::IO::Loop
|
||||
{
|
||||
if (AuAtomicLoad(&this->uAtomicWord) & kFutexBitWake)
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
AuAtomicSub(&this->uAtomicWord, kFutexBitWake);
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@ namespace Aurora::IO::Loop
|
||||
bool LSLocalSemaphore::OnTrigger(AuUInt handle)
|
||||
{
|
||||
auto bRet = this->TryTakeNoSpin();
|
||||
bool bTriggerLater = !bRet;
|
||||
|
||||
while (true)
|
||||
{
|
||||
@ -51,17 +52,36 @@ namespace Aurora::IO::Loop
|
||||
{
|
||||
auto uCount = AuAtomicLoad(&this->uAtomicSemaphore);
|
||||
|
||||
if (uOld - 1 == 0 &&
|
||||
uCount)
|
||||
if (uOld - 1 == 0)
|
||||
{
|
||||
AuAtomicAdd(&this->uAtomicKernelSemaphore, uCount);
|
||||
LSSemaphore::AddMany(uCount);
|
||||
if (uCount)
|
||||
{
|
||||
AuAtomicAdd(&this->uAtomicKernelSemaphore, uCount);
|
||||
LSSemaphore::AddMany(uCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
bTriggerLater = false;
|
||||
}
|
||||
}
|
||||
else if (uOld || !bRet)
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
bTriggerLater = false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (bTriggerLater)
|
||||
{
|
||||
(void)LSSemaphore::OnTrigger(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user