Fix exit to shell not working

This commit is contained in:
elasota
2020-11-30 03:18:09 -05:00
parent 553e343abe
commit cab862ed8b
5 changed files with 31 additions and 5 deletions

View File

@@ -16,6 +16,9 @@
#include "PLDrivers.h"
#include <assert.h>
#include <setjmp.h>
static void TranslateMouseInputEvent(const GpVOSEvent &vosEventBase, uint32_t timestamp, PortabilityLayer::EventQueue *queue)
{
const GpMouseInputEvent &vosEvent = vosEventBase.m_event.m_mouseInputEvent;
@@ -198,4 +201,24 @@ namespace PLSysCalls
PortabilityLayer::SuspendApplication(PortabilityLayer::HostSuspendCallID_CallOnVOSThread, args, nullptr);
}
static jmp_buf gs_mainExitWrapper;
static int gs_exitCode = 0;
void Exit(int exitCode)
{
gs_exitCode = exitCode;
longjmp(gs_mainExitWrapper, 1);
}
int MainExitWrapper(int (*mainFunc)())
{
if (!setjmp(gs_mainExitWrapper))
{
int returnCode = mainFunc();
return returnCode;
}
else
return gs_exitCode;
}
}