add possibility to set tuner priority for alternative services in Customize
[enigma2.git] / lib / dvb / dvbtime.cpp
index 7f8ebb98a78f13328ea0c47cc195b113d59b6826..7684bfa4b3fe3407eeb9203b1b2fc062bda96d94 100644 (file)
@@ -76,7 +76,7 @@ void TDT::ready(int error)
        eDVBLocalTimeHandler::getInstance()->updateTime(error, chan, ++update_count);
 }
 
-int TDT::createTable(int nr, const __u8 *data, unsigned int max)
+int TDT::createTable(unsigned int nr, const __u8 *data, unsigned int max)
 {
        if ( data && data[0] == 0x70 || data[0] == 0x73 )
        {
@@ -129,7 +129,18 @@ eDVBLocalTimeHandler::eDVBLocalTimeHandler()
        if (!res_mgr)
                eDebug("[eDVBLocalTimerHandler] no resource manager !!!!!!!");
        else
+       {
                res_mgr->connectChannelAdded(slot(*this,&eDVBLocalTimeHandler::DVBChannelAdded), m_chanAddedConn);
+               time_t now = time(0);
+               if ( now < 1072224000 ) // 01.01.2004
+                       eDebug("RTC not ready... wait for transponder time");
+               else // inform all who's waiting for valid system time..
+               {
+                       eDebug("Use valid Linux Time :) (RTC?)");
+                       m_time_ready = true;
+                       /*emit*/ m_timeUpdated();
+               }
+       }
 }
 
 eDVBLocalTimeHandler::~eDVBLocalTimeHandler()
@@ -137,6 +148,11 @@ eDVBLocalTimeHandler::~eDVBLocalTimeHandler()
        instance=0;
        for (std::map<iDVBChannel*, channel_data>::iterator it=m_knownChannels.begin(); it != m_knownChannels.end(); ++it)
                delete it->second.tdt;
+       if (ready())
+       {
+               eDebug("set RTC to previous valid time");
+               setRTC(nowTime());
+       }
 }
 
 void eDVBLocalTimeHandler::readTimeOffsetData( const char* filename )