diff options
Diffstat (limited to 'src/citra/config.cpp')
| -rw-r--r-- | src/citra/config.cpp | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 2f13c29a2..9034b188e 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp | |||
| @@ -2,14 +2,15 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #define GLFW_INCLUDE_NONE | ||
| 6 | #include <GLFW/glfw3.h> | ||
| 7 | #include <inih/cpp/INIReader.h> | 5 | #include <inih/cpp/INIReader.h> |
| 8 | 6 | ||
| 7 | #include <SDL.h> | ||
| 8 | |||
| 9 | #include "citra/default_ini.h" | 9 | #include "citra/default_ini.h" |
| 10 | 10 | ||
| 11 | #include "common/file_util.h" | 11 | #include "common/file_util.h" |
| 12 | #include "common/logging/log.h" | 12 | #include "common/logging/log.h" |
| 13 | #include "common/make_unique.h" | ||
| 13 | 14 | ||
| 14 | #include "core/settings.h" | 15 | #include "core/settings.h" |
| 15 | 16 | ||
| @@ -17,21 +18,22 @@ | |||
| 17 | 18 | ||
| 18 | Config::Config() { | 19 | Config::Config() { |
| 19 | // TODO: Don't hardcode the path; let the frontend decide where to put the config files. | 20 | // TODO: Don't hardcode the path; let the frontend decide where to put the config files. |
| 20 | glfw_config_loc = FileUtil::GetUserPath(D_CONFIG_IDX) + "glfw-config.ini"; | 21 | sdl2_config_loc = FileUtil::GetUserPath(D_CONFIG_IDX) + "sdl2-config.ini"; |
| 21 | glfw_config = new INIReader(glfw_config_loc); | 22 | sdl2_config = Common::make_unique<INIReader>(sdl2_config_loc); |
| 22 | 23 | ||
| 23 | Reload(); | 24 | Reload(); |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 26 | bool Config::LoadINI(INIReader* config, const char* location, const std::string& default_contents, bool retry) { | 27 | bool Config::LoadINI(const std::string& default_contents, bool retry) { |
| 27 | if (config->ParseError() < 0) { | 28 | const char* location = this->sdl2_config_loc.c_str(); |
| 29 | if (sdl2_config->ParseError() < 0) { | ||
| 28 | if (retry) { | 30 | if (retry) { |
| 29 | LOG_WARNING(Config, "Failed to load %s. Creating file from defaults...", location); | 31 | LOG_WARNING(Config, "Failed to load %s. Creating file from defaults...", location); |
| 30 | FileUtil::CreateFullPath(location); | 32 | FileUtil::CreateFullPath(location); |
| 31 | FileUtil::WriteStringToFile(true, default_contents, location); | 33 | FileUtil::WriteStringToFile(true, default_contents, location); |
| 32 | *config = INIReader(location); // Reopen file | 34 | sdl2_config = Common::make_unique<INIReader>(location); // Reopen file |
| 33 | 35 | ||
| 34 | return LoadINI(config, location, default_contents, false); | 36 | return LoadINI(default_contents, false); |
| 35 | } | 37 | } |
| 36 | LOG_ERROR(Config, "Failed."); | 38 | LOG_ERROR(Config, "Failed."); |
| 37 | return false; | 39 | return false; |
| @@ -41,51 +43,47 @@ bool Config::LoadINI(INIReader* config, const char* location, const std::string& | |||
| 41 | } | 43 | } |
| 42 | 44 | ||
| 43 | static const std::array<int, Settings::NativeInput::NUM_INPUTS> defaults = { | 45 | static const std::array<int, Settings::NativeInput::NUM_INPUTS> defaults = { |
| 44 | GLFW_KEY_A, GLFW_KEY_S, GLFW_KEY_Z, GLFW_KEY_X, | 46 | SDL_SCANCODE_A, SDL_SCANCODE_S, SDL_SCANCODE_Z, SDL_SCANCODE_X, |
| 45 | GLFW_KEY_Q, GLFW_KEY_W, GLFW_KEY_1, GLFW_KEY_2, | 47 | SDL_SCANCODE_Q, SDL_SCANCODE_W, SDL_SCANCODE_1, SDL_SCANCODE_2, |
| 46 | GLFW_KEY_M, GLFW_KEY_N, GLFW_KEY_B, | 48 | SDL_SCANCODE_M, SDL_SCANCODE_N, SDL_SCANCODE_B, |
| 47 | GLFW_KEY_T, GLFW_KEY_G, GLFW_KEY_F, GLFW_KEY_H, | 49 | SDL_SCANCODE_T, SDL_SCANCODE_G, SDL_SCANCODE_F, SDL_SCANCODE_H, |
| 48 | GLFW_KEY_UP, GLFW_KEY_DOWN, GLFW_KEY_LEFT, GLFW_KEY_RIGHT, | 50 | SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, |
| 49 | GLFW_KEY_I, GLFW_KEY_K, GLFW_KEY_J, GLFW_KEY_L | 51 | SDL_SCANCODE_I, SDL_SCANCODE_K, SDL_SCANCODE_J, SDL_SCANCODE_L |
| 50 | }; | 52 | }; |
| 51 | 53 | ||
| 52 | void Config::ReadValues() { | 54 | void Config::ReadValues() { |
| 53 | // Controls | 55 | // Controls |
| 54 | for (int i = 0; i < Settings::NativeInput::NUM_INPUTS; ++i) { | 56 | for (int i = 0; i < Settings::NativeInput::NUM_INPUTS; ++i) { |
| 55 | Settings::values.input_mappings[Settings::NativeInput::All[i]] = | 57 | Settings::values.input_mappings[Settings::NativeInput::All[i]] = |
| 56 | glfw_config->GetInteger("Controls", Settings::NativeInput::Mapping[i], defaults[i]); | 58 | sdl2_config->GetInteger("Controls", Settings::NativeInput::Mapping[i], defaults[i]); |
| 57 | } | 59 | } |
| 58 | 60 | ||
| 59 | // Core | 61 | // Core |
| 60 | Settings::values.frame_skip = glfw_config->GetInteger("Core", "frame_skip", 0); | 62 | Settings::values.frame_skip = sdl2_config->GetInteger("Core", "frame_skip", 0); |
| 61 | 63 | ||
| 62 | // Renderer | 64 | // Renderer |
| 63 | Settings::values.use_hw_renderer = glfw_config->GetBoolean("Renderer", "use_hw_renderer", false); | 65 | Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", false); |
| 64 | Settings::values.use_shader_jit = glfw_config->GetBoolean("Renderer", "use_shader_jit", true); | 66 | Settings::values.use_shader_jit = sdl2_config->GetBoolean("Renderer", "use_shader_jit", true); |
| 65 | 67 | ||
| 66 | Settings::values.bg_red = (float)glfw_config->GetReal("Renderer", "bg_red", 1.0); | 68 | Settings::values.bg_red = (float)sdl2_config->GetReal("Renderer", "bg_red", 1.0); |
| 67 | Settings::values.bg_green = (float)glfw_config->GetReal("Renderer", "bg_green", 1.0); | 69 | Settings::values.bg_green = (float)sdl2_config->GetReal("Renderer", "bg_green", 1.0); |
| 68 | Settings::values.bg_blue = (float)glfw_config->GetReal("Renderer", "bg_blue", 1.0); | 70 | Settings::values.bg_blue = (float)sdl2_config->GetReal("Renderer", "bg_blue", 1.0); |
| 69 | 71 | ||
| 70 | // Data Storage | 72 | // Data Storage |
| 71 | Settings::values.use_virtual_sd = glfw_config->GetBoolean("Data Storage", "use_virtual_sd", true); | 73 | Settings::values.use_virtual_sd = sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); |
| 72 | 74 | ||
| 73 | // System Region | 75 | // System Region |
| 74 | Settings::values.region_value = glfw_config->GetInteger("System Region", "region_value", 1); | 76 | Settings::values.region_value = sdl2_config->GetInteger("System Region", "region_value", 1); |
| 75 | 77 | ||
| 76 | // Miscellaneous | 78 | // Miscellaneous |
| 77 | Settings::values.log_filter = glfw_config->Get("Miscellaneous", "log_filter", "*:Info"); | 79 | Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Info"); |
| 78 | 80 | ||
| 79 | // Debugging | 81 | // Debugging |
| 80 | Settings::values.use_gdbstub = glfw_config->GetBoolean("Debugging", "use_gdbstub", false); | 82 | Settings::values.use_gdbstub = sdl2_config->GetBoolean("Debugging", "use_gdbstub", false); |
| 81 | Settings::values.gdbstub_port = glfw_config->GetInteger("Debugging", "gdbstub_port", 24689); | 83 | Settings::values.gdbstub_port = sdl2_config->GetInteger("Debugging", "gdbstub_port", 24689); |
| 82 | } | 84 | } |
| 83 | 85 | ||
| 84 | void Config::Reload() { | 86 | void Config::Reload() { |
| 85 | LoadINI(glfw_config, glfw_config_loc.c_str(), DefaultINI::glfw_config_file); | 87 | LoadINI(DefaultINI::sdl2_config_file); |
| 86 | ReadValues(); | 88 | ReadValues(); |
| 87 | } | 89 | } |
| 88 | |||
| 89 | Config::~Config() { | ||
| 90 | delete glfw_config; | ||
| 91 | } | ||