diff options
-rw-r--r-- | system/settings/settings.xml | 7 | ||||
-rw-r--r-- | xbmc/network/NetworkServices.cpp | 14 | ||||
-rw-r--r-- | xbmc/network/upnp/UPnP.cpp | 3 |
3 files changed, 19 insertions, 5 deletions
diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 042c09ec33..9378c28fc5 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2023,12 +2023,15 @@ </dependencies> <control type="toggle" /> </setting> - <setting id="services.upnprenderer" type="boolean" label="21881" help="36325"> + <setting id="services.upnpcontroller" type="boolean" label="21361" help="36326"> <level>1</level> <default>false</default> + <dependencies> + <dependency type="enable" setting="services.upnpserver">true</dependency> + </dependencies> <control type="toggle" /> </setting> - <setting id="services.upnpcontroller" type="boolean" label="21361" help="36326"> + <setting id="services.upnprenderer" type="boolean" label="21881" help="36325"> <level>1</level> <default>false</default> <control type="toggle" /> diff --git a/xbmc/network/NetworkServices.cpp b/xbmc/network/NetworkServices.cpp index 32ef8198dc..1886e38205 100644 --- a/xbmc/network/NetworkServices.cpp +++ b/xbmc/network/NetworkServices.cpp @@ -257,7 +257,14 @@ bool CNetworkServices::OnSettingChanging(const CSetting *setting) if (settingId == "services.upnpserver") { if (((CSettingBool*)setting)->GetValue()) - return StartUPnPServer(); + { + if (!StartUPnPServer()) + return false; + + // always stop and restart the client if necessary + StopUPnPClient(); + StartUPnPClient(); + } else return StopUPnPServer(); } @@ -764,7 +771,8 @@ bool CNetworkServices::StopUPnP(bool bWait) bool CNetworkServices::StartUPnPClient() { #ifdef HAS_UPNP - if (!CSettings::Get().GetBool("services.upnpcontroller")) + if (!CSettings::Get().GetBool("services.upnpcontroller") || + !CSettings::Get().GetBool("services.upnpserver")) return false; CLog::Log(LOGNOTICE, "starting upnp controller"); @@ -856,6 +864,8 @@ bool CNetworkServices::StopUPnPServer() if (!IsUPnPRendererRunning()) return true; + StopUPnPClient(); + CLog::Log(LOGNOTICE, "stopping upnp server"); CUPnP::GetInstance()->StopServer(); diff --git a/xbmc/network/upnp/UPnP.cpp b/xbmc/network/upnp/UPnP.cpp index e9ce9e9dc9..f71b1effec 100644 --- a/xbmc/network/upnp/UPnP.cpp +++ b/xbmc/network/upnp/UPnP.cpp @@ -496,7 +496,8 @@ CUPnP::StartClient() m_MediaBrowser = new CMediaBrowser(m_CtrlPointHolder->m_CtrlPoint); // start controller - if (CSettings::Get().GetBool("services.upnpcontroller")) { + if (CSettings::Get().GetBool("services.upnpcontroller") && + CSettings::Get().GetBool("services.upnpserver")) { m_MediaController = new CMediaController(m_CtrlPointHolder->m_CtrlPoint); } } |