[pvr] fixed prevent deadlock when pvr manager is starting up and while not finished...
authorgimli <ebsi4711@gmail.com>
Wed, 26 Dec 2012 10:42:11 +0000 (11:42 +0100)
committergimli <ebsi4711@gmail.com>
Wed, 26 Dec 2012 10:42:11 +0000 (11:42 +0100)
xbmc/pvr/channels/PVRChannelGroup.cpp

index 391766b..fbaf937 100644 (file)
@@ -962,7 +962,12 @@ void CPVRChannelGroup::ResetChannelNumbers(void)
 
 void CPVRChannelGroup::Notify(const Observable &obs, const ObservableMessage msg)
 {
-  if (msg == ObservableMessageGuiSettings)
+  /* TODO: while pvr manager is starting up do accept setting changes. */
+  if(!g_PVRManager.IsStarted())
+  {
+    CLog::Log(LOGWARNING, "CPVRChannelGroup setting change ignored while PVRManager is starting\n");
+  }
+  else if (msg == ObservableMessageGuiSettings)
   {
     CSingleLock lock(m_critSection);
     bool bUsingBackendChannelOrder   = g_guiSettings.GetBool("pvrmanager.backendchannelorder");
@@ -972,6 +977,7 @@ void CPVRChannelGroup::Notify(const Observable &obs, const ObservableMessage msg
 
     m_bUsingBackendChannelOrder   = bUsingBackendChannelOrder;
     m_bUsingBackendChannelNumbers = bUsingBackendChannelNumbers;
+    lock.Leave();
 
     /* check whether this channel group has to be renumbered */
     if (bChannelOrderChanged || bChannelNumbersChanged)