async CZapitMessages::CMD_RELOAD_CURRENTSERVICES as different way to resolve dead-lock after scan, for testing

git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1864 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
focus
2011-11-18 14:43:56 +00:00
parent 61031262b1
commit e0d1b7f375
3 changed files with 12 additions and 1 deletions

View File

@@ -469,9 +469,10 @@ void CZapitClient::reinitChannels()
void CZapitClient::reloadCurrentServices()
{
send(CZapitMessages::CMD_RELOAD_CURRENTSERVICES);
#if 0
CZapitMessages::responseCmd response;
CBasicClient::receive_data((char* )&response, sizeof(response), true);
#endif
close_connection();
}

View File

@@ -562,6 +562,9 @@ bool CServiceScan::ScanProviders()
g_bouquetManager->loadBouquets();
printf("[scan] save bouquets done\n");
Cleanup(true);
#if 1
myZapitClient.reloadCurrentServices();
#else
/* this can hang as the thread handling the connections
* could already be in g_Zapit->stopScan(), waiting for
* *this* thread to join().
@@ -572,6 +575,7 @@ bool CServiceScan::ScanProviders()
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
CZapit::getInstance()->ZapIt(live_channel_id, false);
CZapit::getInstance()->SendEvent(CZapitClient::EVT_SERVICES_CHANGED);
#endif
} else {
Cleanup(false);
CFrontend::getInstance()->setTsidOnid(0);
@@ -634,6 +638,9 @@ bool CServiceScan::ScanTransponder()
//g_bouquetManager->clearAll();
g_bouquetManager->loadBouquets();
Cleanup(true);
#if 1
myZapitClient.reloadCurrentServices();
#else
/* see the explanation in CServiceScan::ScanProviders() in why this is a bad idea
myZapitClient.reloadCurrentServices();
*/
@@ -641,6 +648,7 @@ bool CServiceScan::ScanTransponder()
t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID();
CZapit::getInstance()->ZapIt(live_channel_id, false);
CZapit::getInstance()->SendEvent(CZapitClient::EVT_SERVICES_CHANGED);
#endif
} else {
Cleanup(false);
CFrontend::getInstance()->setTsidOnid(0);

View File

@@ -956,8 +956,10 @@ bool CZapit::ParseCommand(CBasicMessage::Header &rmsg, int connfd)
}
case CZapitMessages::CMD_RELOAD_CURRENTSERVICES: {
#if 0
response.cmd = CZapitMessages::CMD_READY;
CBasicServer::send_data(connfd, &response, sizeof(response));
#endif
DBG("[zapit] sending EVT_SERVICES_CHANGED\n");
CFrontend::getInstance()->setTsidOnid(0);
ZapIt(live_channel_id, current_is_nvod);