diff options
author | montellese <montellese@xbmc.org> | 2013-03-07 20:45:51 +0100 |
---|---|---|
committer | montellese <montellese@xbmc.org> | 2013-04-01 22:15:25 +0200 |
commit | 386345a0c36fd6c3bd561e602afa0e2783716db5 (patch) | |
tree | a0d068bb056216e747ae0212009ec2427c4318e7 | |
parent | ac4c044d348998a2cadf4f36fea317391ee846d7 (diff) |
CPlayerCoreFactory: implement ISettingsHandler
-rw-r--r-- | xbmc/Application.cpp | 1 | ||||
-rw-r--r-- | xbmc/cores/playercorefactory/PlayerCoreFactory.cpp | 9 | ||||
-rw-r--r-- | xbmc/cores/playercorefactory/PlayerCoreFactory.h | 9 | ||||
-rw-r--r-- | xbmc/settings/Settings.cpp | 5 |
4 files changed, 16 insertions, 8 deletions
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp index 543867674f..5de990f34a 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -702,6 +702,7 @@ bool CApplication::Create() } CLog::Log(LOGNOTICE, "load settings..."); + g_settings.RegisterSettingsHandler(&CPlayerCoreFactory::Get()); g_guiSettings.Initialize(); // Initialize default Settings - don't move g_powerManager.SetDefaults(); diff --git a/xbmc/cores/playercorefactory/PlayerCoreFactory.cpp b/xbmc/cores/playercorefactory/PlayerCoreFactory.cpp index 949b103f1f..de800edcdb 100644 --- a/xbmc/cores/playercorefactory/PlayerCoreFactory.cpp +++ b/xbmc/cores/playercorefactory/PlayerCoreFactory.cpp @@ -30,12 +30,15 @@ #include "URL.h" #include "FileItem.h" #include "settings/AdvancedSettings.h" +#include "settings/Settings.h" #include "utils/AutoPtrHandle.h" #include "cores/ExternalPlayer/ExternalPlayer.h" #include "PlayerCoreConfig.h" #include "PlayerSelectionRule.h" #include "guilib/LocalizeStrings.h" +#define PLAYERCOREFACTORY_XML "playercorefactory.xml" + using namespace AUTOPTR; CPlayerCoreFactory::CPlayerCoreFactory() @@ -55,6 +58,12 @@ CPlayerCoreFactory& CPlayerCoreFactory::Get() return sPlayerCoreFactory; } +void CPlayerCoreFactory::OnSettingsLoaded() +{ + LoadConfiguration("special://xbmc/system/" PLAYERCOREFACTORY_XML, true); + LoadConfiguration(g_settings.GetUserDataItem(PLAYERCOREFACTORY_XML), false); +} + /* generic function to make a vector unique, removes later duplicates */ template<typename T> void unique (T &con) { diff --git a/xbmc/cores/playercorefactory/PlayerCoreFactory.h b/xbmc/cores/playercorefactory/PlayerCoreFactory.h index 2fb28b1452..0a60e0978e 100644 --- a/xbmc/cores/playercorefactory/PlayerCoreFactory.h +++ b/xbmc/cores/playercorefactory/PlayerCoreFactory.h @@ -23,6 +23,7 @@ #include "system.h" #include "cores/IPlayerCallback.h" +#include "settings/ISettingsHandler.h" #include "threads/CriticalSection.h" #include "utils/StdString.h" @@ -67,11 +68,13 @@ const PLAYERCOREID PCID_AMLPLAYER = EPC_AMLPLAYER; const PLAYERCOREID PCID_OMXPLAYER = EPC_OMXPLAYER; #endif -class CPlayerCoreFactory +class CPlayerCoreFactory : public ISettingsHandler { public: static CPlayerCoreFactory& Get(); + virtual void OnSettingsLoaded(); + PLAYERCOREID GetPlayerCore(const CStdString& strCoreName) const; CPlayerCoreConfig* GetPlayerConfig(const CStdString& strCoreName) const; CStdString GetPlayerName(const PLAYERCOREID eCore) const; @@ -89,8 +92,6 @@ public: PLAYERCOREID SelectPlayerDialog(VECPLAYERCORES &vecCores, float posX = 0, float posY = 0) const; PLAYERCOREID SelectPlayerDialog(float posX, float posY) const; - bool LoadConfiguration(const std::string &file, bool clear); - void OnPlayerDiscovered(const CStdString& id, const CStdString& name, EPLAYERCORES core); void OnPlayerRemoved(const CStdString& id); @@ -101,6 +102,8 @@ protected: virtual ~CPlayerCoreFactory(); private: + bool LoadConfiguration(const std::string &file, bool clear); + std::vector<CPlayerCoreConfig *> m_vecCoreConfigs; std::vector<CPlayerSelectionRule *> m_vecCoreSelectionRules; CCriticalSection m_section; diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp index 7880b59d1b..5d62ab981b 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -49,7 +49,6 @@ #if defined(_LINUX) && defined(HAS_FILESYSTEM_SMB) #include "filesystem/SMBDirectory.h" #endif -#include "cores/playercorefactory/PlayerCoreFactory.h" #include "utils/FileUtils.h" #include "utils/URIUtils.h" #include "input/MouseStat.h" @@ -816,10 +815,6 @@ bool CSettings::LoadSettings(const CStdString& strSettingsFile) g_guiSettings.LoadXML(pRootElement); LoadSkinSettings(pRootElement); - // Configure the PlayerCoreFactory - CPlayerCoreFactory::Get().LoadConfiguration("special://xbmc/system/playercorefactory.xml", true); - CPlayerCoreFactory::Get().LoadConfiguration(GetUserDataItem("playercorefactory.xml"), false); - // Advanced settings g_advancedSettings.Load(); |