Change yaze_run_cocoa_app_delegate to return an int for better error handling; update main to reflect this change

This commit is contained in:
scawful
2025-01-26 13:19:58 -05:00
parent 26cda69d44
commit 9a11c970ae
3 changed files with 10 additions and 5 deletions

View File

@@ -51,7 +51,7 @@ void yaze_initialize_cocoa();
/**
* @brief Run the Cocoa application delegate.
*/
void yaze_run_cocoa_app_delegate(const char *filename);
int yaze_run_cocoa_app_delegate(const char *filename);
#ifdef __cplusplus
} // extern "C"

View File

@@ -236,20 +236,26 @@ extern "C" void yaze_initialize_cococa() {
}
}
extern "C" void yaze_run_cocoa_app_delegate(const char *filename) {
extern "C" int yaze_run_cocoa_app_delegate(const char *filename) {
yaze_initialize_cococa();
yaze::core::Controller controller;
RETURN_VOID_IF_ERROR(controller.OnEntry(filename));
EXIT_IF_ERROR(controller.OnEntry(filename));
while (controller.IsActive()) {
@autoreleasepool {
controller.OnInput();
if (auto status = controller.OnLoad(); !status.ok()) {
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Error"];
[alert setInformativeText:[NSString stringWithUTF8String:status.message().data()]];
[alert addButtonWithTitle:@"OK"];
[alert runModal];
break;
}
controller.DoRender();
}
}
controller.OnExit();
return EXIT_SUCCESS;
}
#endif

View File

@@ -32,8 +32,7 @@ int main(int argc, char** argv) {
}
#ifdef __APPLE__
yaze_run_cocoa_app_delegate(rom_filename.c_str());
return EXIT_SUCCESS;
return yaze_run_cocoa_app_delegate(rom_filename.c_str());
#elif defined(_WIN32)
// We set SDL_MAIN_HANDLED for Win32 to avoid SDL hijacking main()
SDL_SetMainReady();