Skip to content

Commit

Permalink
Merge branch 'settings_reload' into 'master'
Browse files Browse the repository at this point in the history
Support reload for settings values

See merge request OpenMW/openmw!3543
  • Loading branch information
Capostrophic committed Nov 1, 2023
2 parents 6f4e7ed + ebfcb66 commit 8a8d77a
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 13 deletions.
2 changes: 2 additions & 0 deletions components/settings/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ namespace Settings

void Manager::clear()
{
sInitialized.clear();
StaticValues::clear();
mDefaultSettings.clear();
mUserSettings.clear();
mChangedSettings.clear();
Expand Down
27 changes: 16 additions & 11 deletions components/settings/values.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,29 @@

namespace Settings
{
Index* StaticValues::sIndex = nullptr;
Values* StaticValues::sValues = nullptr;
std::unique_ptr<Index> StaticValues::sIndex;
std::unique_ptr<Values> StaticValues::sDefaultValues;
std::unique_ptr<Values> StaticValues::sValues;

void StaticValues::initDefaults()
{
if (sValues != nullptr)
throw std::logic_error("Default settings already initialized");
static Index index;
static Values values(index);
sIndex = &index;
sValues = &values;
if (sDefaultValues != nullptr)
throw std::logic_error("Default settings are already initialized");
sIndex = std::make_unique<Index>();
sDefaultValues = std::make_unique<Values>(*sIndex);
}

void StaticValues::init()
{
if (sValues == nullptr)
if (sDefaultValues == nullptr)
throw std::logic_error("Default settings are not initialized");
static Values values(std::move(*sValues));
sValues = &values;
sValues = std::make_unique<Values>(std::move(*sDefaultValues));
}

void StaticValues::clear()
{
sValues = nullptr;
sDefaultValues = nullptr;
sIndex = nullptr;
}
}
8 changes: 6 additions & 2 deletions components/settings/values.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "settingvalue.hpp"

#include <cassert>
#include <memory>
#include <string_view>

namespace Settings
Expand Down Expand Up @@ -71,9 +72,12 @@ namespace Settings

static void init();

static void clear();

private:
static Index* sIndex;
static Values* sValues;
static std::unique_ptr<Index> sIndex;
static std::unique_ptr<Values> sDefaultValues;
static std::unique_ptr<Values> sValues;

friend Values& values();

Expand Down

0 comments on commit 8a8d77a

Please sign in to comment.