Validate audio/video driver command-line arguments

This will exit early if the audio/video driver specified doesn't exist.
This commit is contained in:
Hugo Locurcio 2019-09-27 15:06:15 +02:00
parent daf4a9f9be
commit ca268dfecd
No known key found for this signature in database
GPG Key ID: 39E8F8BE30B0A49C

View File

@ -444,6 +444,32 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
if (I->next()) {
audio_driver = I->next()->get();
bool found = false;
for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) {
if (audio_driver == OS::get_singleton()->get_audio_driver_name(i)) {
found = true;
}
}
if (!found) {
OS::get_singleton()->print("Unknown audio driver '%s', aborting.\nValid options are ", audio_driver.utf8().get_data());
for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) {
if (i == OS::get_singleton()->get_audio_driver_count() - 1) {
OS::get_singleton()->print(" and ");
} else if (i != 0) {
OS::get_singleton()->print(", ");
}
OS::get_singleton()->print("'%s'", OS::get_singleton()->get_audio_driver_name(i));
}
OS::get_singleton()->print(".\n");
goto error;
}
N = I->next()->next();
} else {
OS::get_singleton()->print("Missing audio driver argument, aborting.\n");
@ -455,6 +481,32 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
if (I->next()) {
video_driver = I->next()->get();
bool found = false;
for (int i = 0; i < OS::get_singleton()->get_video_driver_count(); i++) {
if (video_driver == OS::get_singleton()->get_video_driver_name(i)) {
found = true;
}
}
if (!found) {
OS::get_singleton()->print("Unknown video driver '%s', aborting.\nValid options are ", video_driver.utf8().get_data());
for (int i = 0; i < OS::get_singleton()->get_video_driver_count(); i++) {
if (i == OS::get_singleton()->get_video_driver_count() - 1) {
OS::get_singleton()->print(" and ");
} else if (i != 0) {
OS::get_singleton()->print(", ");
}
OS::get_singleton()->print("'%s'", OS::get_singleton()->get_video_driver_name(i));
}
OS::get_singleton()->print(".\n");
goto error;
}
N = I->next()->next();
} else {
OS::get_singleton()->print("Missing video driver argument, aborting.\n");
@ -989,10 +1041,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
if (video_driver_idx < 0) {
//OS::get_singleton()->alert("Invalid Video Driver: " + video_driver);
video_driver_idx = 0;
//goto error;
}
if (audio_driver == "") { // specified in project.godot
@ -1009,10 +1058,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
if (audio_driver_idx < 0) {
OS::get_singleton()->alert("Invalid Audio Driver: " + audio_driver);
audio_driver_idx = 0;
//goto error;
}
{