mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 23:55:38 +00:00
Improved thread safety for Settings.
Also moved some data from the global namespace to an anonymous namespace.
This commit is contained in:
parent
6bc4a09c9b
commit
81d6f0fd30
|
@ -19,8 +19,8 @@
|
|||
#include <pugixml.hpp>
|
||||
#include <vector>
|
||||
|
||||
Settings* Settings::sInstance = nullptr;
|
||||
|
||||
namespace
|
||||
{
|
||||
// These values are NOT saved to es_settings.xml since they're not set via
|
||||
// the in-program settings menu. Most can be set using command-line arguments,
|
||||
// but some are debug flags that are either hardcoded or set by internal debug
|
||||
|
@ -59,6 +59,7 @@ std::vector<std::string> settingsSkipSaving
|
|||
"ScraperFilter"
|
||||
// clang-format on
|
||||
};
|
||||
} // namespace
|
||||
|
||||
Settings::Settings()
|
||||
{
|
||||
|
@ -67,20 +68,10 @@ Settings::Settings()
|
|||
loadFile();
|
||||
}
|
||||
|
||||
Settings* Settings::getInstance()
|
||||
std::shared_ptr<Settings> Settings::getInstance()
|
||||
{
|
||||
if (sInstance == nullptr)
|
||||
sInstance = new Settings();
|
||||
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
void Settings::deinit()
|
||||
{
|
||||
if (sInstance) {
|
||||
delete sInstance;
|
||||
sInstance = nullptr;
|
||||
}
|
||||
static std::shared_ptr<Settings> instance{std::shared_ptr<Settings>(new Settings)};
|
||||
return instance;
|
||||
}
|
||||
|
||||
void Settings::setDefaults()
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
#define ES_CORE_SETTINGS_H
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
// This is a singleton for storing settings.
|
||||
class Settings
|
||||
{
|
||||
public:
|
||||
static Settings* getInstance();
|
||||
static void deinit();
|
||||
static std::shared_ptr<Settings> getInstance();
|
||||
|
||||
void loadFile();
|
||||
void saveFile();
|
||||
|
@ -39,8 +39,6 @@ public:
|
|||
bool setString(const std::string& name, const std::string& value);
|
||||
|
||||
private:
|
||||
static Settings* sInstance;
|
||||
|
||||
Settings();
|
||||
|
||||
// Clear everything and load default values.
|
||||
|
|
Loading…
Reference in a new issue