SDL: Properly check for initialization

This commit is contained in:
Jeffrey Pfau 2015-06-12 00:53:15 -07:00
parent f2e298f78d
commit d09d0e505f
2 changed files with 22 additions and 17 deletions

View File

@ -66,6 +66,7 @@ Misc:
- GBA: SIO logging layer - GBA: SIO logging layer
- Qt: Add application icon and XDG desktop files - Qt: Add application icon and XDG desktop files
- GBA Thread: Split GBASync into a separate file - GBA Thread: Split GBASync into a separate file
- SDL: Properly check for initialization
0.2.1: (2015-05-13) 0.2.1: (2015-05-13)
Bugfixes: Bugfixes:

View File

@ -107,8 +107,12 @@ int main(int argc, char** argv) {
GBAMapOptionsToContext(&opts, &context); GBAMapOptionsToContext(&opts, &context);
GBAMapArgumentsToContext(&args, &context); GBAMapArgumentsToContext(&args, &context);
bool didFail = false;
renderer.audio.samples = context.audioBuffers; renderer.audio.samples = context.audioBuffers;
GBASDLInitAudio(&renderer.audio, &context); if (!GBASDLInitAudio(&renderer.audio, &context)) {
didFail = true;
}
renderer.player.bindings = &inputMap; renderer.player.bindings = &inputMap;
GBASDLInitBindings(&inputMap); GBASDLInitBindings(&inputMap);
@ -118,17 +122,16 @@ int main(int argc, char** argv) {
GBASDLPlayerLoadConfig(&renderer.player, GBAConfigGetInput(&config)); GBASDLPlayerLoadConfig(&renderer.player, GBAConfigGetInput(&config));
context.overrides = GBAConfigGetOverrides(&config); context.overrides = GBAConfigGetOverrides(&config);
if (!didFail) {
#if SDL_VERSION_ATLEAST(2, 0, 0) #if SDL_VERSION_ATLEAST(2, 0, 0)
GBASDLSetScreensaverSuspendable(&renderer.events, opts.suspendScreensaver); GBASDLSetScreensaverSuspendable(&renderer.events, opts.suspendScreensaver);
GBASDLSuspendScreensaver(&renderer.events); GBASDLSuspendScreensaver(&renderer.events);
#endif #endif
int didFail = 0;
if (GBAThreadStart(&context)) { if (GBAThreadStart(&context)) {
renderer.runloop(&context, &renderer); renderer.runloop(&context, &renderer);
GBAThreadJoin(&context); GBAThreadJoin(&context);
} else { } else {
didFail = 1; didFail = true;
printf("Could not run game. Are you sure the file exists and is a Game Boy Advance game?\n"); printf("Could not run game. Are you sure the file exists and is a Game Boy Advance game?\n");
} }
@ -138,9 +141,10 @@ int main(int argc, char** argv) {
#endif #endif
if (GBAThreadHasCrashed(&context)) { if (GBAThreadHasCrashed(&context)) {
didFail = 1; didFail = true;
printf("The game crashed!\n"); printf("The game crashed!\n");
} }
}
freeArguments(&args); freeArguments(&args);
GBAConfigFreeOpts(&opts); GBAConfigFreeOpts(&opts);
GBAConfigDeinit(&config); GBAConfigDeinit(&config);