viacuda: Do shutdown.

Shutdown will enter the debugger or quit depending on the execution mode.
Quit is different from shutdown since it is triggered outside the guest by using the host Quit menu item.
This commit is contained in:
joevt 2024-05-05 23:40:32 -07:00 committed by dingusdev
parent de727db4c6
commit f09710a5f7
5 changed files with 22 additions and 3 deletions

View File

@ -41,7 +41,7 @@ void EventManager::poll_events()
switch (event.type) {
case SDL_QUIT:
power_on = false;
power_off_reason = po_shut_down;
power_off_reason = po_quit;
break;
case SDL_WINDOWEVENT: {

View File

@ -306,10 +306,12 @@ extern jmp_buf exc_env;
enum Po_Cause : int {
po_none,
po_starting_up,
po_quit,
po_quitting,
po_shut_down,
po_shutting_down,
po_restarting,
po_restart,
po_restarting,
po_disassemble_on,
po_disassemble_off,
po_enter_debugger,

View File

@ -470,6 +470,10 @@ void enter_debugger() {
power_off_reason = po_restarting;
break;
}
if (power_off_reason == po_quit) {
power_off_reason = po_quitting;
break;
}
power_on = true;
if (power_off_reason == po_starting_up) {

View File

@ -733,8 +733,12 @@ void ViaCuda::pseudo_command() {
power_on = false;
power_off_reason = po_restart;
break;
case CUDA_WARM_START:
case CUDA_POWER_DOWN:
LOG_F(INFO, "Cuda: system shutdown");
power_on = false;
power_off_reason = po_shut_down;
break;
case CUDA_WARM_START:
case CUDA_MONO_STABLE_RESET:
/* really kludge temp code */
LOG_F(INFO, "Cuda: Restart/Shutdown signal sent with command 0x%x!", cmd);

View File

@ -211,6 +211,15 @@ int main(int argc, char** argv) {
power_on = true;
continue;
}
if (power_off_reason == po_shutting_down) {
if (execution_mode != debugger) {
LOG_F(INFO, "Shutdown.");
break;
}
LOG_F(INFO, "Shutdown...");
power_on = true;
continue;
}
break;
}