diff --git a/data/cables.xml b/data/cables.xml index e3963efc7..f56dd0ef2 100644 --- a/data/cables.xml +++ b/data/cables.xml @@ -390,28 +390,42 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + @@ -447,6 +461,20 @@ + + + + + + + + + + + + + + @@ -463,22 +491,16 @@ + + + - - - - - - - - - - - - - - - + + + + + + diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 318d78a36..261fc5a87 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -146,7 +146,7 @@ void CChannelList::putChannel(CZapitChannel* channel) { int num = channel->number - 1; if(num < 0) { - printf("CChannelList::addChannel error inserting at %d : %s\n", num, channel->name.c_str()); + printf("%s error inserting at %d\n", __FUNCTION__, num); return; } if(num >= (int) chanlist.size()) { diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index 801726c0e..59b582376 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -111,6 +111,7 @@ void CInfoViewer::Init() newfreq = true; chanready = 1; fileplay = 0; + SDT_freq_update = false; /* maybe we should not tie this to the blinkenlights settings? */ if (g_settings.casystem_display < 2) @@ -1538,16 +1539,15 @@ void CInfoViewer::showSNR () return; char percent[10]; uint16_t ssig, ssnr; - /* right now, infobar_show_channellogo == 3 is the trigger for signal bars etc. TODO: decouple this */ if (! fileplay && ( g_settings.infobar_show_channellogo == 3 || g_settings.infobar_show_channellogo == 5 || g_settings.infobar_show_channellogo == 6 )) { int chanH = g_SignalFont->getHeight(); int freqStartY = BoxStartY + 2 * chanH - 3; - if (newfreq && chanready) { + if ((newfreq && chanready) || SDT_freq_update) { char freq[20]; - newfreq = false; + CZapitClient::CCurrentServiceInfo si = g_Zapit->getCurrentServiceInfo (); std::string polarisation; if (g_info.delivery_system == DVB_S) @@ -1557,7 +1557,8 @@ void CInfoViewer::showSNR () snprintf (freq, sizeof(freq), "%d.%d MHz %s", si.tsfrequency / 1000, si.tsfrequency % 1000, polarisation.c_str()); int satNameWidth = g_SignalFont->getRenderWidth (freq); - g_SignalFont->RenderString (3 + BoxStartX + ((ChanWidth - satNameWidth) / 2), BoxStartY + 2 * chanH - 3, satNameWidth, freq, COL_INFOBAR); + g_SignalFont->RenderString (3 + BoxStartX + ((ChanWidth - satNameWidth) / 2), BoxStartY + 2 * chanH - 3, satNameWidth, freq, SDT_freq_update ? COL_COLORED_EVENTS_INFOBAR:COL_INFOBAR); + SDT_freq_update = false; } int sw, snr, sig, posx, posy; diff --git a/src/gui/infoviewer.h b/src/gui/infoviewer.h index aa4e0512e..68d86a7c7 100644 --- a/src/gui/infoviewer.h +++ b/src/gui/infoviewer.h @@ -186,6 +186,7 @@ class CInfoViewer int handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data); void clearVirtualZapMode() {virtual_zap_mode = false;} void changePB(); + bool SDT_freq_update; }; class CInfoViewerHandler : public CMenuTarget diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 42736de80..9b10c81ad 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2861,6 +2861,11 @@ _repeat: } else if (msg == NeutrinoMessages::EVT_SERVICES_UPD) { SDTreloadChannels = true; + g_InfoViewer->SDT_freq_update = true; + if( !g_InfoViewer->is_visible && !autoshift){ + g_RCInput->postMsg(NeutrinoMessages::SHOW_INFOBAR , 0); + } + return messages_return::handled; // ShowHintUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_EXTRA_ZAPIT_SDT_CHANGED), // CMessageBox::mbrBack,CMessageBox::mbBack, NEUTRINO_ICON_INFO); } @@ -2902,7 +2907,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) videoDecoder->ShowPicture(DATADIR "/neutrino/icons/shutdown.jpg"); if(g_settings.epg_save /* && timeset && g_Sectionsd->getIsTimeSet ()*/) { - saveEpg(); + saveEpg(true);// true CVFD::MODE_SHUTDOWN } stop_daemons(true /*retcode*/);//need here for timer_is_rec before saveSetup @@ -3043,18 +3048,26 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) } } -void CNeutrinoApp::saveEpg() +void CNeutrinoApp::saveEpg(bool cvfd_mode) { struct stat my_stat; if(stat(g_settings.epg_dir.c_str(), &my_stat) == 0){ - printf("Saving EPG to %s....\n", g_settings.epg_dir.c_str()); + const char *save_txt = "Saving EPG"; + printf("%s to %s....\n",save_txt, g_settings.epg_dir.c_str()); neutrino_msg_t msg; neutrino_msg_data_t data; + + CVFD::getInstance()->Clear(); + CVFD::getInstance()->setMode(CVFD::MODE_TVRADIO); + CVFD::getInstance ()->ShowText(save_txt); + g_Sectionsd->writeSI2XML(g_settings.epg_dir.c_str()); while( true ) { g_RCInput->getMsg(&msg, &data, 1200); // 120 secs.. if (( msg == CRCInput::RC_timeout ) || (msg == NeutrinoMessages::EVT_SI_FINISHED)) { //printf("Msg %x timeout %d EVT_SI_FINISHED %x\n", msg, CRCInput::RC_timeout, NeutrinoMessages::EVT_SI_FINISHED); + CVFD::getInstance()->Clear(); + CVFD::getInstance()->setMode(cvfd_mode ? CVFD::MODE_SHUTDOWN : CVFD::MODE_STANDBY);// true CVFD::MODE_SHUTDOWN , false CVFD::MODE_STANDBY break; } } @@ -3351,7 +3364,7 @@ void CNeutrinoApp::standbyMode( bool bOnOff ) if(!CRecordManager::getInstance()->RecordingStatus()) { //only save epg when not recording if(g_settings.epg_save) { - saveEpg(); + saveEpg(false);//false CVFD::MODE_STANDBY } } diff --git a/src/neutrino.h b/src/neutrino.h index 117a7ae90..8c732fb85 100644 --- a/src/neutrino.h +++ b/src/neutrino.h @@ -156,7 +156,7 @@ private: void standbyMode( bool bOnOff ); void AudioMute( int newValue, bool isEvent= false ); void setvol(int vol); - void saveEpg(); + void saveEpg(bool cvfd_mode); void ExitRun(const bool write_si = true, int retcode = 0); void RealRun(CMenuWidget &mainSettings);