mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 06:53:43 +00:00
Clean up game thread in SDL version
This commit is contained in:
@@ -11,6 +11,11 @@ void GpFiber_Win32::YieldTo(IGpFiber *toFiber)
|
||||
SwitchToFiber(static_cast<GpFiber_Win32*>(toFiber)->m_fiber);
|
||||
}
|
||||
|
||||
void GpFiber_Win32::YieldToTerminal(IGpFiber *toFiber)
|
||||
{
|
||||
YieldTo(toFiber);
|
||||
}
|
||||
|
||||
void GpFiber_Win32::Destroy()
|
||||
{
|
||||
this->~GpFiber_Win32();
|
||||
|
@@ -6,6 +6,7 @@ class GpFiber_Win32 final : public IGpFiber
|
||||
{
|
||||
public:
|
||||
void YieldTo(IGpFiber *toFiber) override;
|
||||
void YieldToTerminal(IGpFiber *toFiber) override;
|
||||
void Destroy() override;
|
||||
|
||||
static IGpFiber *Create(LPVOID fiber);
|
||||
|
@@ -19,6 +19,11 @@ void GpFiber_SDL::YieldTo(IGpFiber *toFiber)
|
||||
m_event->Wait();
|
||||
}
|
||||
|
||||
void GpFiber_SDL::YieldToTerminal(IGpFiber *toFiber)
|
||||
{
|
||||
static_cast<GpFiber_SDL*>(toFiber)->m_event->Signal();
|
||||
}
|
||||
|
||||
void GpFiber_SDL::Destroy()
|
||||
{
|
||||
delete this;
|
||||
|
@@ -16,6 +16,7 @@ public:
|
||||
~GpFiber_SDL();
|
||||
|
||||
void YieldTo(IGpFiber *fromFiber) override;
|
||||
void YieldToTerminal(IGpFiber *fromFiber) override;
|
||||
void Destroy() override;
|
||||
|
||||
private:
|
||||
|
@@ -5,5 +5,6 @@
|
||||
struct IGpFiber
|
||||
{
|
||||
virtual void YieldTo(IGpFiber *toFiber) = 0;
|
||||
virtual void YieldToTerminal(IGpFiber *toFiber) = 0;
|
||||
virtual void Destroy() = 0;
|
||||
};
|
||||
|
@@ -141,7 +141,7 @@ void GpAppEnvironment::AppThreadFunc()
|
||||
GpAppInterface_Get()->ApplicationMain();
|
||||
|
||||
m_applicationState = ApplicationState_Terminated;
|
||||
m_applicationFiber->YieldTo(m_vosFiber);
|
||||
m_applicationFiber->YieldToTerminal(m_vosFiber);
|
||||
}
|
||||
|
||||
void GpAppEnvironment::InitializeApplicationState()
|
||||
|
Reference in New Issue
Block a user