aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormontellese <montellese@xbmc.org>2013-03-07 20:45:51 +0100
committermontellese <montellese@xbmc.org>2013-04-01 22:15:25 +0200
commit386345a0c36fd6c3bd561e602afa0e2783716db5 (patch)
treea0d068bb056216e747ae0212009ec2427c4318e7
parentac4c044d348998a2cadf4f36fea317391ee846d7 (diff)
CPlayerCoreFactory: implement ISettingsHandler
-rw-r--r--xbmc/Application.cpp1
-rw-r--r--xbmc/cores/playercorefactory/PlayerCoreFactory.cpp9
-rw-r--r--xbmc/cores/playercorefactory/PlayerCoreFactory.h9
-rw-r--r--xbmc/settings/Settings.cpp5
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();