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);