From 6c00ef77d573b0cc4df865a828d282cb782ba75d Mon Sep 17 00:00:00 2001 From: Kai Sommerfeld Date: Tue, 23 Apr 2019 16:56:46 +0200 Subject: [PATCH] [settings] Fix media source path substitution. --- xbmc/settings/AdvancedSettings.cpp | 2 +- xbmc/settings/lib/SettingsManager.cpp | 9 +++++++-- xbmc/settings/lib/SettingsManager.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp index 8f0a8327e3c38..8125852959fdd 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -103,7 +103,7 @@ void CAdvancedSettings::Initialize(const CAppParamParser ¶ms, CSettingsManag params.SetAdvancedSettings(*this); settingsMgr.RegisterSettingOptionsFiller("loggingcomponents", SettingOptionsLoggingComponentsFiller); - settingsMgr.RegisterSettingsHandler(this); + settingsMgr.RegisterSettingsHandler(this, true); std::set settingSet; settingSet.insert(CSettings::SETTING_DEBUG_SHOWLOGINFO); settingSet.insert(CSettings::SETTING_DEBUG_EXTRALOGGING); diff --git a/xbmc/settings/lib/SettingsManager.cpp b/xbmc/settings/lib/SettingsManager.cpp index d3c120eee2fb4..a643b6ac09366 100644 --- a/xbmc/settings/lib/SettingsManager.cpp +++ b/xbmc/settings/lib/SettingsManager.cpp @@ -423,14 +423,19 @@ void CSettingsManager::RegisterSettingControl(const std::string &controlType, IS m_settingControlCreators.insert(std::make_pair(controlType, settingControlCreator)); } -void CSettingsManager::RegisterSettingsHandler(ISettingsHandler *settingsHandler) +void CSettingsManager::RegisterSettingsHandler(ISettingsHandler *settingsHandler, bool bFront /* = false */) { if (settingsHandler == nullptr) return; CExclusiveLock lock(m_critical); if (find(m_settingsHandlers.begin(), m_settingsHandlers.end(), settingsHandler) == m_settingsHandlers.end()) - m_settingsHandlers.push_back(settingsHandler); + { + if (bFront) + m_settingsHandlers.insert(m_settingsHandlers.begin(), settingsHandler); + else + m_settingsHandlers.emplace_back(settingsHandler); + } } void CSettingsManager::UnregisterSettingsHandler(ISettingsHandler *settingsHandler) diff --git a/xbmc/settings/lib/SettingsManager.h b/xbmc/settings/lib/SettingsManager.h index 56adfb09f50a4..dc5d4faa27b2b 100644 --- a/xbmc/settings/lib/SettingsManager.h +++ b/xbmc/settings/lib/SettingsManager.h @@ -223,8 +223,9 @@ class CSettingsManager : public ISettingCreator, public ISettingControlCreator, \brief Registers the given ISettingsHandler implementation. \param settingsHandler ISettingsHandler implementation + \param bFront If True, insert the handler in front of other registered handlers, insert at the end otherwise. */ - void RegisterSettingsHandler(ISettingsHandler *settingsHandler); + void RegisterSettingsHandler(ISettingsHandler *settingsHandler, bool bFront = false); /*! \brief Unregisters the given ISettingsHandler implementation.