[SCM] kodi-pvr-hts/master: Fix async state handling.

tiber-guest at users.alioth.debian.org tiber-guest at users.alioth.debian.org
Fri Nov 4 23:23:40 UTC 2016


The following commit has been merged in the master branch:
commit 6f1561909704371c5139e2f4c5750ee24711975c
Author: Kai Sommerfeld <kai.sommerfeld at gmx.com>
Date:   Wed Apr 20 23:21:24 2016 +0200

    Fix async state handling.

diff --git a/src/Tvheadend.cpp b/src/Tvheadend.cpp
index db9a47a..3877d84 100644
--- a/src/Tvheadend.cpp
+++ b/src/Tvheadend.cpp
@@ -1356,8 +1356,8 @@ bool CTvheadend::Connected ( void )
   for (auto &entry : m_schedules)
     entry.second.SetDirty(true);
 
-  /* Request Async data */
-  m_asyncState.SetState(ASYNC_NONE);
+  /* Request Async data, first is channels */
+  m_asyncState.SetState(ASYNC_CHN);
   
   msg = htsmsg_create_map();
   if (Settings::GetInstance().GetAsyncEpg())
@@ -1370,7 +1370,10 @@ bool CTvheadend::Connected ( void )
     htsmsg_add_u32(msg, "epg", 0);
 
   if ((msg = m_conn.SendAndWait0("enableAsyncMetadata", msg)) == NULL)
+  {
+    m_asyncState.SetState(ASYNC_NONE);
     return false;
+  }
 
   htsmsg_destroy(msg);
   Logger::Log(LogLevel::LEVEL_DEBUG, "async updates requested");
@@ -1567,8 +1570,8 @@ void CTvheadend::SyncCompleted ( void )
 
 void CTvheadend::SyncChannelsCompleted ( void )
 {
-  /* Already done */
-  if (m_asyncState.GetState() > ASYNC_CHN)
+  /* check state engine */
+  if (m_asyncState.GetState() != ASYNC_CHN)
     return;
 
   /* Tags */
@@ -1593,8 +1596,8 @@ void CTvheadend::SyncChannelsCompleted ( void )
 
 void CTvheadend::SyncDvrCompleted ( void )
 {
-  /* Done */
-  if (m_asyncState.GetState() > ASYNC_DVR)
+  /* check state engine */
+  if (m_asyncState.GetState() != ASYNC_DVR)
     return;
 
   /* Recordings */
@@ -1618,8 +1621,15 @@ void CTvheadend::SyncDvrCompleted ( void )
 
 void CTvheadend::SyncEpgCompleted ( void )
 {
-  /* Done */
-  if (!Settings::GetInstance().GetAsyncEpg() || m_asyncState.GetState() > ASYNC_EPG)
+  /* check state engine */
+  if (!Settings::GetInstance().GetAsyncEpg())
+  {
+    m_asyncState.SetState(ASYNC_DONE);
+    return;
+  }
+
+  /* check state engine */
+  if (m_asyncState.GetState() != ASYNC_EPG)
     return;
 
   /* Schedules */
@@ -1661,6 +1671,9 @@ void CTvheadend::SyncEpgCompleted ( void )
     evt.SetChannel(entry.second);
     PushEpgEventUpdate(evt, EPG_EVENT_DELETED);
   }
+
+  /* Next */
+  m_asyncState.SetState(ASYNC_DONE);
 }
 
 void CTvheadend::ParseTagAddOrUpdate ( htsmsg_t *msg, bool bAdd )

-- 
kodi-pvr-hts packaging



More information about the pkg-multimedia-commits mailing list