summaryrefslogtreecommitdiffstats
path: root/game/client/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/main.cc')
-rw-r--r--game/client/main.cc60
1 files changed, 37 insertions, 23 deletions
diff --git a/game/client/main.cc b/game/client/main.cc
index 86e9783..e7fdc3b 100644
--- a/game/client/main.cc
+++ b/game/client/main.cc
@@ -252,29 +252,41 @@ int main(int argc, char **argv)
glfwSetWindowIcon(globals::window, 1, &icon_image);
}
- if(!saladLoadALdefault()) {
- spdlog::critical("salad: failed to load function pointers");
- std::terminate();
- }
-
- globals::sound_dev = alcOpenDevice(nullptr);
-
- if(globals::sound_dev == nullptr) {
- spdlog::critical("openal: alcOpenDevice failed");
- std::terminate();
+ if(cmdline::contains("nosound")) {
+ spdlog::warn("client: sound disabled [per command line]");
+ globals::sound_dev = nullptr;
+ globals::sound_ctx = nullptr;
}
-
- spdlog::info("sound: {}", reinterpret_cast<const char *>(alcGetString(globals::sound_dev, ALC_DEVICE_SPECIFIER)));
-
- globals::sound_ctx = alcCreateContext(globals::sound_dev, nullptr);
-
- if(globals::sound_ctx == nullptr) {
- spdlog::critical("openal: alcCreateContext failed");
- std::terminate();
+ else {
+ if(!saladLoadALdefault()) {
+ spdlog::warn("client: sound disabled [openal loading failed]");
+ globals::sound_dev = nullptr;
+ globals::sound_ctx = nullptr;
+ }
+ else {
+ globals::sound_dev = alcOpenDevice(nullptr);
+
+ if(globals::sound_dev == nullptr) {
+ spdlog::warn("client: sound disabled [no device]");
+ globals::sound_ctx = nullptr;
+ }
+ else {
+ spdlog::info("sound: {}", reinterpret_cast<const char *>(alcGetString(globals::sound_dev, ALC_DEVICE_SPECIFIER)));
+
+ globals::sound_ctx = alcCreateContext(globals::sound_dev, nullptr);
+
+ if(globals::sound_ctx == nullptr) {
+ spdlog::warn("client: sound disabled [context creation failed]");
+ alcCloseDevice(globals::sound_dev);
+ globals::sound_dev = nullptr;
+ }
+ else {
+ alcMakeContextCurrent(globals::sound_ctx);
+ }
+ }
+ }
}
- alcMakeContextCurrent(globals::sound_ctx);
-
splash::init_client();
window_title::update();
@@ -417,9 +429,11 @@ int main(int argc, char **argv)
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
- alcMakeContextCurrent(nullptr);
- alcDestroyContext(globals::sound_ctx);
- alcCloseDevice(globals::sound_dev);
+ if(globals::sound_ctx){
+ alcMakeContextCurrent(nullptr);
+ alcDestroyContext(globals::sound_ctx);
+ alcCloseDevice(globals::sound_dev);
+ }
glfwDestroyWindow(globals::window);
glfwTerminate();