From e4b29536e39e972024d1ed0e474d16ec7160b572 Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Fri, 2 Dec 2011 09:35:03 +0000 Subject: [PATCH] Attempt to fix problems after pmt updates. Please report, if comething wrong - with logs git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1929 e54a6e83-5905-42d5-8d5c-058d10e6a962 Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/f54ce0ede3dfa4be36de5bdb25e7c243939bc028 Author: [CST] Focus Date: 2011-12-02 (Fri, 02 Dec 2011) ------------------ This commit was generated by Migit --- src/zapit/src/cam.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/zapit/src/cam.cpp b/src/zapit/src/cam.cpp index 33eee45ce..99b42ee28 100644 --- a/src/zapit/src/cam.cpp +++ b/src/zapit/src/cam.cpp @@ -137,8 +137,8 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start CZapitChannel * channel = CServiceManager::getInstance()->FindChannel(channel_id); if(channel == NULL) { - printf("CCamManager: channel %llx not found\n", channel_id); - return false; + printf("CCamManager: channel %llx not found\n", channel_id); + return false; } mutex.lock(); @@ -151,11 +151,15 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start sat_iterator_t sit = satellitePositions.find(channel->getSatellitePosition()); cammap_iterator_t it = channel_map.find(channel_id); - if(it == channel_map.end()) { + if(it != channel_map.end()) { + cam = it->second; + } else if(start) { cam = new CCam(); channel_map.insert(std::pair(channel_id, cam)); - } else - cam = it->second; + } else { + mutex.unlock(); + return false; + } switch(mode) { case PLAY: @@ -173,7 +177,10 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start } oldmask = cam->getCaMask(); - newmask = cam->makeMask(demux, start); + if(force_update) + newmask = oldmask; + else + newmask = cam->makeMask(demux, start); if((oldmask != newmask) || force_update) cam->setCaPmt(channel->getCaPmt(), source, newmask, true);