diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index aed99efb0..a77f767b4 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -116,6 +116,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) @@ -1533,16 +1534,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) @@ -1552,7 +1552,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; int height; diff --git a/src/gui/infoviewer.h b/src/gui/infoviewer.h index 9e4adb5a6..7039708e7 100644 --- a/src/gui/infoviewer.h +++ b/src/gui/infoviewer.h @@ -185,6 +185,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 4d2beff48..b8d68d432 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2870,6 +2870,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); }