Treat --debugger command line as a temporary setting

Before, Settings::SetDebugModeEnabled was used; this calls SetBaseOrCurrent() which will usually permanently change the base configuration setting for the debugger to true. Thus, the debugger would remain active even if the --debugger command line option was removed. Now, it remains active only for the current run, like other command-line options.

Note that SetBaseOrCurrent is also used by the "Show Debugging UI" option under Options -> Interface; this means that if the debugger is turned off (or off and then back on) by the user while --debugger is specified, this will be reset to whatever the base configuration had when Dolphin is closed and reopened. This behavior is consistent with the rest of the UI.

To my understanding, the --debugger option is something from 5.0 stable/DolphinWx where there was no way to toggle the debug UI in the settings (and the command-line option was the only way of enabling it). It's less useful nowadays.
This commit is contained in:
Pokechu22 2023-04-17 23:11:26 -07:00
parent 1a2dcc53f2
commit c0b6e9e69c
2 changed files with 5 additions and 4 deletions

View File

@ -257,8 +257,6 @@ int main(int argc, char* argv[])
MainWindow win{std::move(boot), static_cast<const char*>(options.get("movie"))}; MainWindow win{std::move(boot), static_cast<const char*>(options.get("movie"))};
Settings::Instance().SetCurrentUserStyle(Settings::Instance().GetCurrentUserStyle()); Settings::Instance().SetCurrentUserStyle(Settings::Instance().GetCurrentUserStyle());
if (options.is_set("debugger"))
Settings::Instance().SetDebugModeEnabled(true);
win.Show(); win.Show();
#if defined(USE_ANALYTICS) && USE_ANALYTICS #if defined(USE_ANALYTICS) && USE_ANALYTICS

View File

@ -22,7 +22,7 @@ class CommandLineConfigLayerLoader final : public Config::ConfigLayerLoader
{ {
public: public:
CommandLineConfigLayerLoader(const std::list<std::string>& args, const std::string& video_backend, CommandLineConfigLayerLoader(const std::list<std::string>& args, const std::string& video_backend,
const std::string& audio_backend, bool batch) const std::string& audio_backend, bool batch, bool debugger)
: ConfigLayerLoader(Config::LayerType::CommandLine) : ConfigLayerLoader(Config::LayerType::CommandLine)
{ {
if (!video_backend.empty()) if (!video_backend.empty())
@ -39,6 +39,9 @@ public:
if (batch) if (batch)
m_values.emplace_back(Config::MAIN_RENDER_TO_MAIN.GetLocation(), ValueToString(false)); m_values.emplace_back(Config::MAIN_RENDER_TO_MAIN.GetLocation(), ValueToString(false));
if (debugger)
m_values.emplace_back(Config::MAIN_ENABLE_DEBUGGING.GetLocation(), ValueToString(true));
// Arguments are in the format of <System>.<Section>.<Key>=Value // Arguments are in the format of <System>.<Section>.<Key>=Value
for (const auto& arg : args) for (const auto& arg : args)
{ {
@ -134,7 +137,7 @@ static void AddConfigLayer(const optparse::Values& options)
Config::AddLayer(std::make_unique<CommandLineConfigLayerLoader>( Config::AddLayer(std::make_unique<CommandLineConfigLayerLoader>(
std::move(config_args), static_cast<const char*>(options.get("video_backend")), std::move(config_args), static_cast<const char*>(options.get("video_backend")),
static_cast<const char*>(options.get("audio_emulation")), static_cast<const char*>(options.get("audio_emulation")),
static_cast<bool>(options.get("batch")))); static_cast<bool>(options.get("batch")), static_cast<bool>(options.get("debugger"))));
} }
optparse::Values& ParseArguments(optparse::OptionParser* parser, int argc, char** argv) optparse::Values& ParseArguments(optparse::OptionParser* parser, int argc, char** argv)