diff --git a/data/locale/slovak.locale b/data/locale/slovak.locale index 9088325c2..8f6c9a703 100644 --- a/data/locale/slovak.locale +++ b/data/locale/slovak.locale @@ -1397,6 +1397,7 @@ menu.hint_sleeptimer Nastavenie časovača pre prechod prijímača do pohotovost menu.hint_sleeptimer_min Prednastavené nastavenia pre časovač vypnutia menu.hint_sms_channel Ak povolené, číselné klávesy v zozname kanálov budú použité pre vyhľadávanie kanálu v štýle SMS menu.hint_sms_movie Ak povolené, číselné klávesy v prehliadači filmov budú použité pre vyhľadávanie filmu v štýle SMS +menu.hint_soft_restart Reštartovanie Neutrino bez rebootu menu.hint_soft_restart Reštartovanie Neutrino-HD bez rebootu menu.hint_softupdate_check Kontrola dostupných aktualizácií, stiahnutie a naprogramovanie firmware menu.hint_softupdate_check_local Výber a programovanie firmware z lokálneho súboru diff --git a/lib/libcoolstream/hardware_caps.cpp b/lib/libcoolstream/hardware_caps.cpp index f488e046a..40cffb753 100644 --- a/lib/libcoolstream/hardware_caps.cpp +++ b/lib/libcoolstream/hardware_caps.cpp @@ -2,7 +2,7 @@ * determine the capabilities of the hardware. * part of libstb-hal * - * (C) 2010-2012 Stefan Seyfried + * (C) 2010-2012,2016 Stefan Seyfried * (C) 2016 M. Liebmann * * License: GPL v2 or later diff --git a/lib/libcoolstream/hardware_caps.h b/lib/libcoolstream/hardware_caps.h index c45c173dc..8846db8ab 100644 --- a/lib/libcoolstream/hardware_caps.h +++ b/lib/libcoolstream/hardware_caps.h @@ -2,7 +2,7 @@ * determine the capabilities of the hardware. * part of libstb-hal * - * (C) 2010-2012 Stefan Seyfried + * (C) 2010-2012,2016 Stefan Seyfried * (C) 2016 M. Liebmann * * License: GPL v2 or later diff --git a/src/driver/audiodec/ffmpegdec.cpp b/src/driver/audiodec/ffmpegdec.cpp index a4eb905c1..625aef79f 100644 --- a/src/driver/audiodec/ffmpegdec.cpp +++ b/src/driver/audiodec/ffmpegdec.cpp @@ -243,11 +243,7 @@ CBaseDec::RetCode CFfmpegDec::Decoder(FILE *_in, int /*OutputFd*/, State* state, mSampleRate = samplerate; mChannels = av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO); -#if __BYTE_ORDER == __LITTLE_ENDIAN audioDecoder->PrepareClipPlay(mChannels, mSampleRate, 16, 1); -#else - audioDecoder->PrepareClipPlay(mChannels, mSampleRate, 16, 0); -#endif AVFrame *frame = NULL; AVPacket rpacket; diff --git a/src/driver/streamts.cpp b/src/driver/streamts.cpp index da17be491..988a6b61a 100644 --- a/src/driver/streamts.cpp +++ b/src/driver/streamts.cpp @@ -188,6 +188,7 @@ bool CStreamInstance::Open() void CStreamInstance::run() { printf("CStreamInstance::run: %" PRIx64 "\n", channel_id); + set_threadname("n:streaminstance"); /* pids here cannot be empty */ stream_pids_t::iterator it = pids.begin(); diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index 53b43bcae..47facd63a 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1390,7 +1390,6 @@ bool CTimeThread::setSystemTime(time_t tim, bool force) gettimeofday(&tv, NULL); timediff = int64_t(tim * 1000000 - (tv.tv_usec + tv.tv_sec * 1000000)); localtime_r(&tv.tv_sec, &t); - int absdiff = abs(tim - tv.tv_sec); xprintf("%s: timediff %" PRId64 ", current: %02d.%02d.%04d %02d:%02d:%02d, dvb: %s", name.c_str(), timediff, @@ -1402,9 +1401,7 @@ bool CTimeThread::setSystemTime(time_t tim, bool force) return; } #endif - if (absdiff < 1) /* do not bother for differences less than one second */ - return true; - if (absdiff < 120) { + if (timeset && abs(tim - tv.tv_sec) < 120) { /* abs() is int */ struct timeval oldd; tv.tv_sec = time_t(timediff / 1000000LL); tv.tv_usec = suseconds_t(timediff % 1000000LL); @@ -1508,7 +1505,8 @@ void CTimeThread::run() dvb_time = st.getTime(); success = true; } - } + } else + retry = false; /* reset bogon detector after invalid read() */ } /* default sleep time */ sleep_time = ntprefresh * 60; @@ -1723,10 +1721,21 @@ bool CCNThread::shouldSleep() if (eit_version != 0xff) return true; - if (++eit_retry > 1) { - xprintf("%s::%s eit_retry > 1 (%d) -> going to sleep\n", name.c_str(), __func__, eit_retry); + /* on first retry, restart the demux. I'm not sure if it is a driver bug + * or a bug in our logic, but without this, I'm sometimes missing CN events + * and / or the eit_version and thus the update filter will stop working */ + if (++eit_retry < 2) { + xprintf("%s::%s first retry (%d) -> restart demux\n", name.c_str(), __func__, eit_retry); + change(0); /* this also resets lastChanged */ + } + /* ugly, this has been checked before. But timeoutsDMX can be < 0 for multiple reasons, + * and only skipTime should send CNThread finally to sleep if eit_version is not found */ + time_t since = time_monotonic() - lastChanged; + if (since > skipTime) { + xprintf("%s::%s timed out after %lds -> going to sleep\n", name.c_str(), __func__, since); return true; } + /* retry */ sendToSleepNow = false; return false; } diff --git a/src/gui/bedit/bouqueteditor_channels.cpp b/src/gui/bedit/bouqueteditor_channels.cpp index 6046663e4..661d887c9 100644 --- a/src/gui/bedit/bouqueteditor_channels.cpp +++ b/src/gui/bedit/bouqueteditor_channels.cpp @@ -169,8 +169,9 @@ void CBEChannelWidget::paint() sbc = 1; int sbh= (sb- 4)/ sbc; - if (sbh) - frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ sbs * sbh, 11, sbh, COL_MENUCONTENT_PLUS_3); + if (sbh == 0) + return; + frameBuffer->paintBoxRel(x+ width- 13, ypos+ 2+ sbs * sbh, 11, sbh, COL_SCROLLBAR_ACTIVE_PLUS_0); } void CBEChannelWidget::paintHead() diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index e5b984d31..d0e5d82ed 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -156,8 +156,6 @@ void CInfoViewer::Init() recordModeActive = false; is_visible = false; showButtonBar = false; - //gotTime = g_Sectionsd->getIsTimeSet (); - gotTime = timeset; zap_mode = IV_MODE_DEFAULT; newfreq = true; chanready = 1; @@ -557,7 +555,7 @@ void CInfoViewer::show_current_next(bool new_chan, int epgpos) if (!(info_CurrentNext.flags & (CSectionsdClient::epgflags::has_later | CSectionsdClient::epgflags::has_current | CSectionsdClient::epgflags::not_broadcast))) { neutrino_locale_t loc; - if (!gotTime) + if (!timeset) loc = LOCALE_INFOVIEWER_WAITTIME; else if (showButtonBar) loc = LOCALE_INFOVIEWER_EPGWAIT; @@ -593,8 +591,6 @@ void CInfoViewer::showMovieTitle(const int playState, const t_channel_id &Channe fileplay = true; zap_mode = _zap_mode; reset_allScala(); - if (!gotTime) - gotTime = timeset; if (g_settings.radiotext_enable && g_Radiotext) { g_Radiotext->RT_MsgShow = true; @@ -760,8 +756,6 @@ void CInfoViewer::showTitle(CZapitChannel * channel, const bool calledFromNumZap newfreq = true; reset_allScala(); - if (!gotTime) - gotTime = timeset; if(!is_visible && !calledFromNumZap) fader.StartFadeIn(); @@ -1647,7 +1641,7 @@ int CInfoViewer::handleMsg (const neutrino_msg_t msg, neutrino_msg_data_t data) infoViewerBB->showIcon_16_9 (); return messages_return::handled; } else if (msg == NeutrinoMessages::EVT_TIMESET) { - gotTime = true; + // gotTime = true; return messages_return::handled; } #if 0 @@ -1978,7 +1972,7 @@ void CInfoViewer::show_Data (bool calledFromEvent) int seit = (abs(jetzt - info_CurrentNext.current_zeit.startzeit) + 30) / 60; int rest = (info_CurrentNext.current_zeit.dauer / 60) - seit; runningPercent = 0; - if (!gotTime) + if (!timeset) snprintf(runningRest, sizeof(runningRest), "%d %s", info_CurrentNext.current_zeit.dauer / 60, unit_short_minute); else if (jetzt < info_CurrentNext.current_zeit.startzeit) snprintf(runningRest, sizeof(runningRest), "%s %d %s", g_Locale->getText(LOCALE_WORD_IN), seit, unit_short_minute); @@ -2032,7 +2026,7 @@ void CInfoViewer::show_Data (bool calledFromEvent) (calledFromEvent && !(info_CurrentNext.flags & (CSectionsdClient::epgflags::has_next|CSectionsdClient::epgflags::has_current)))) { // no EPG available - display_Info(g_Locale->getText(gotTime ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME), NULL); + display_Info(g_Locale->getText(timeset ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME), NULL); /* send message. Parental pin check gets triggered on EPG events... */ /* clear old info in getEPG */ CSectionsdClient::CurrentNextInfo dummy; @@ -2093,7 +2087,7 @@ void CInfoViewer::show_Data (bool calledFromEvent) // no EPG available ChanInfoY += height; frameBuffer->paintBox (ChanInfoX + 10, ChanInfoY, BoxEndX, ChanInfoY + height, COL_INFOBAR_PLUS_0); - g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString (BoxStartX + ChanWidth + 20, ChanInfoY + height, BoxEndX - (BoxStartX + ChanWidth + 20), g_Locale->getText (gotTime ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME), COL_INFOBAR_TEXT); + g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->RenderString (BoxStartX + ChanWidth + 20, ChanInfoY + height, BoxEndX - (BoxStartX + ChanWidth + 20), g_Locale->getText (timeset ? LOCALE_INFOVIEWER_NOEPG : LOCALE_INFOVIEWER_WAITTIME), COL_INFOBAR_TEXT); } else { // irgendein EPG gefunden int duration1Width = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]->getRenderWidth (runningRest); diff --git a/src/gui/opkg_manager.cpp b/src/gui/opkg_manager.cpp index 62c89eaa2..2f0de0890 100644 --- a/src/gui/opkg_manager.cpp +++ b/src/gui/opkg_manager.cpp @@ -58,7 +58,7 @@ #include #include -#if 0 +#if 1 #define OPKG_CL "opkg" #else #define OPKG_CL "opkg-cl" diff --git a/src/gui/plugins.cpp b/src/gui/plugins.cpp index 039ed8468..f7b5e16f3 100644 --- a/src/gui/plugins.cpp +++ b/src/gui/plugins.cpp @@ -425,7 +425,7 @@ void CPlugins::startLuaPlugin(int number) lua->runScript(script); delete lua; #endif -#if HAVE_SPARK_HARDWARE +#if 0 frameBuffer->ClearFB(); #endif videoDecoder->Pig(-1, -1, -1, -1); diff --git a/src/gui/streaminfo2.cpp b/src/gui/streaminfo2.cpp index a36f5f5e0..9b645c365 100644 --- a/src/gui/streaminfo2.cpp +++ b/src/gui/streaminfo2.cpp @@ -261,6 +261,27 @@ int CStreamInfo2::doSignalStrengthLoop () /* rate limiting is done in update_rate */ g_RCInput->getMsg_us(&msg, &data, 0); + if ((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetFadeTimer())) + { + if (fader.FadeDone()) + { + break; + } + continue; + } + if (fadeout && msg == CRCInput::RC_timeout) + { + if (fader.StartFadeOut()) + { + msg = 0; + continue; + } + else + { + break; + } + } + // switch paint mode if (msg == CRCInput::RC_red || msg == CRCInput::RC_blue || msg == CRCInput::RC_green || msg == CRCInput::RC_yellow) { hide (); diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index 546979fcd..fc3a5d5e4 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -588,7 +588,8 @@ struct button_label TimerListButtons[] = { NEUTRINO_ICON_BUTTON_MENU_SMALL, NONEXISTANT_LOCALE }, { NEUTRINO_ICON_BUTTON_PLAY , NONEXISTANT_LOCALE } }; -size_t TimerListButtonsCount = sizeof(TimerListButtons)/sizeof(TimerListButtons[0]); +// int to match the type in paintButtons +int TimerListButtonsCount = sizeof(TimerListButtons)/sizeof(TimerListButtons[0]); #define RemoteBoxFooterButtonCount 3 static const struct button_label RemoteBoxFooterButtons[RemoteBoxFooterButtonCount] = { diff --git a/src/gui/widget/listhelpers.cpp b/src/gui/widget/listhelpers.cpp index 0f7c19724..9d3adf3ab 100644 --- a/src/gui/widget/listhelpers.cpp +++ b/src/gui/widget/listhelpers.cpp @@ -33,7 +33,7 @@ static int upDownKey(int size, neutrino_msg_t msg, int lines, int sel) return -1; if (msg >= CRCInput::RC_MaxRC) { - printf("CListHelpers:%s: invalid key? 0x%X\n", __func__, (uint32_t)msg); + printf("CListHelpers:%s: invalid key? 0x%lx\n", __func__, msg); return -1; } int key = (int)msg; @@ -46,7 +46,7 @@ static int upDownKey(int size, neutrino_msg_t msg, int lines, int sel) else if (msg == CRCInput::RC_down) step = 1; else { - printf("CListHelpers:%s: invalid key? 0x%X\n", __func__, (uint32_t)msg); + printf("CListHelpers:%s: invalid key? 0x%lx\n", __func__, msg); return -1; } // printf("CListHelpers:%s: key 0x%04lx lines %d size %d sel %d\n", __func__, msg, lines, size, sel); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 89de31673..99360f545 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -540,7 +540,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.infobar_sat_display = configfile.getBool("infobar_sat_display" , true ); g_settings.infobar_show_channeldesc = configfile.getBool("infobar_show_channeldesc" , false ); - g_settings.infobar_subchan_disp_pos = configfile.getInt32("infobar_subchan_disp_pos" , 0 ); + g_settings.infobar_subchan_disp_pos = configfile.getInt32("infobar_subchan_disp_pos", 4); // subchan display in infobar g_settings.infobar_buttons_usertitle = configfile.getBool("infobar_buttons_usertitle", false ); g_settings.progressbar_gradient = configfile.getBool("progressbar_gradient", true ); g_settings.progressbar_design = configfile.getInt32("progressbar_design", CProgressBar::PB_GRAPHIC); //NI @@ -592,7 +592,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.pref_subs[i] = configfile.getString(cfg_key, _lang); //NI } g_settings.subs_charset = configfile.getString("subs_charset", "CP1252"); - g_settings.zap_cycle = configfile.getInt32( "zap_cycle", 0 ); + g_settings.zap_cycle = configfile.getInt32("zap_cycle", 1); /* stay in bouquet by default */ //screen saver g_settings.screensaver_delay = configfile.getInt32("screensaver_delay", 1); diff --git a/src/nhttpd/tuxboxapi/neutrinoyparser.cpp b/src/nhttpd/tuxboxapi/neutrinoyparser.cpp index 871fa8c10..5cf092095 100644 --- a/src/nhttpd/tuxboxapi/neutrinoyparser.cpp +++ b/src/nhttpd/tuxboxapi/neutrinoyparser.cpp @@ -850,6 +850,7 @@ std::string CNeutrinoYParser::func_get_partition_list(CyhookHandler *, std::str //------------------------------------------------------------------------- std::string CNeutrinoYParser::func_get_boxtype(CyhookHandler *, std::string) { +#if 0 unsigned int system_rev = cs_get_revision(); std::string boxname = "CST "; @@ -905,7 +906,15 @@ std::string CNeutrinoYParser::func_get_boxtype(CyhookHandler *, std::string) boxname += buffer; break; } - +#else + std::string boxname = g_info.hw_caps->boxvendor; + if (boxname.compare("Coolstream") == 0) + boxname = "CST"; /* that's more or less an external API... */ + boxname += " " + std::string(g_info.hw_caps->boxname); + if (!strcmp(g_info.hw_caps->boxname, "Neo") && + CFEManager::getInstance()->getFrontendCount() > 1) + boxname += " Twin"; +#endif return boxname; } //------------------------------------------------------------------------- @@ -913,6 +922,7 @@ std::string CNeutrinoYParser::func_get_boxtype(CyhookHandler *, std::string) //------------------------------------------------------------------------- std::string CNeutrinoYParser::func_get_boxmodel(CyhookHandler *, std::string) { +#if 0 unsigned int system_rev = cs_get_revision(); std::string boxmodel = "Unknown"; @@ -945,7 +955,9 @@ std::string CNeutrinoYParser::func_get_boxmodel(CyhookHandler *, std::string) default: break; } - +#else + std::string boxmodel = std::string(g_info.hw_caps->boxarch); +#endif return boxmodel; } //------------------------------------------------------------------------- diff --git a/src/system/helpers.cpp b/src/system/helpers.cpp index 417bfe6d3..7051f2336 100644 --- a/src/system/helpers.cpp +++ b/src/system/helpers.cpp @@ -669,7 +669,6 @@ std::string& htmlEntityDecode(std::string& text) CFileHelpers::CFileHelpers() { FileBufMaxSize = 0xFFFF; - doCopyFlag = true; ConsoleQuiet = false; clearDebugInfo(); }