mirror of
https://github.com/decaf-emu/decaf-emu.git
synced 2026-10-12 16:48:12 +00:00
@@ -106,11 +106,13 @@ Processor::fiberEntryPoint(Fiber *fiber)
|
||||
void
|
||||
Processor::exit()
|
||||
{
|
||||
// Return to parent fiber
|
||||
// Destroy current fiber and return to parent fiber
|
||||
auto core = tCurrentCore;
|
||||
auto fiber = tCurrentCore->currentFiber;
|
||||
auto parent = fiber->parentFiber;
|
||||
gLog->trace("Core {} exit thread {}", core->id, fiber->thread->id);
|
||||
SwitchToFiber(fiber->parentFiber);
|
||||
destroyFiber(fiber);
|
||||
SwitchToFiber(parent);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -199,6 +201,17 @@ Processor::createFiber()
|
||||
return fiber;
|
||||
}
|
||||
|
||||
void
|
||||
Processor::destroyFiber(Fiber *fiber)
|
||||
{
|
||||
if (fiber->thread) {
|
||||
assert(fiber->thread->fiber);
|
||||
}
|
||||
|
||||
mFiberList.erase(std::remove(mFiberList.begin(), mFiberList.end(), fiber), mFiberList.end());
|
||||
delete fiber;
|
||||
}
|
||||
|
||||
Fiber *
|
||||
Processor::getCurrentFiber()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user