#include "irrlichttypes_bloated.h"
#include "util/string.h"
-#include "jthread/jmutex.h"
+#include "threading/mutex.h"
#include <string>
#include <map>
#include <list>
class Settings;
struct NoiseParams;
+// Global objects
+extern Settings *g_settings;
+extern std::string g_settings_path;
+
/** function type to register a changed callback */
-typedef void (*setting_changed_callback)(const std::string, void *userdata);
+typedef void (*setting_changed_callback)(const std::string &name, void *data);
enum ValueType {
VALUETYPE_STRING,
// remove a setting
bool remove(const std::string &name);
void clear();
+ void clearDefaults();
void updateValue(const Settings &other, const std::string &name);
void update(const Settings &other);
void registerChangedCallback(std::string name, setting_changed_callback cbf, void *userdata = NULL);
+ void deregisterChangedCallback(std::string name, setting_changed_callback cbf, void *userdata = NULL);
private:
void updateNoLock(const Settings &other);
void clearNoLock();
+ void clearDefaultsNoLock();
void doCallbacks(std::string name);
std::map<std::string, SettingsEntry> m_settings;
std::map<std::string, SettingsEntry> m_defaults;
+
std::map<std::string, std::vector<std::pair<setting_changed_callback,void*> > > m_callbacks;
- // All methods that access m_settings/m_defaults directly should lock this.
- mutable JMutex m_mutex;
+
+ mutable Mutex m_callbackMutex;
+ mutable Mutex m_mutex; // All methods that access m_settings/m_defaults directly should lock this.
+
};
#endif