diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index fb32fbadb..1c298bb59 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -263,9 +263,10 @@ void CEventList::readEvents(const t_channel_id channel_id) return; } -void CEventList::getPrvNextChannelName(t_channel_id &channel_id,std::string &next_channel_name,std::string &prev_channel_name,std::string ¤t_channel_name, neutrino_msg_t msg){ - t_bouquet_id current_bouquet_id= bouquetList->getActiveBouquetNumber(); - t_channel_id channel_id_tmp = channel_id; +void CEventList::getChannelNames(t_channel_id &channel_id, std::string ¤t_channel_name, std::string &prev_channel_name, std::string &next_channel_name, neutrino_msg_t msg) +{ + t_bouquet_id current_bouquet_id = bouquetList->getActiveBouquetNumber(); + t_channel_id channel_id_tmp = channel_id; const unsigned int channel_nr = bouquetList->Bouquets[current_bouquet_id]->channelList->getSize(); if(channel_nr < 2){ channel_id = 0; @@ -592,7 +593,7 @@ int CEventList::exec(const t_channel_id channel_id, const std::string& channelna // maybe remove RC_rewind and RC_forward in the future? std::string next_channel_name, prev_channel_name, current_channel_name; t_channel_id _channel_id = channel_id; - getPrvNextChannelName(_channel_id, next_channel_name, prev_channel_name, current_channel_name, msg); + getChannelNames(_channel_id, current_channel_name, prev_channel_name, next_channel_name, msg); if(_channel_id){ bgRightBoxPaint = false; loop = false; @@ -900,7 +901,7 @@ void CEventList::paintHead(t_channel_id _channel_id, std::string _channelname, s header->paint(CC_SAVE_SCREEN_NO); if(_channelname_prev.empty() && _channelname_next.empty()){ - getPrvNextChannelName(_channel_id, _channelname_next, _channelname_prev, _channelname,0); + getChannelNames(_channel_id, _channelname, _channelname_prev, _channelname_next, 0); } paintBottomBox(_channelname_prev, _channelname_next); diff --git a/src/gui/eventlist.h b/src/gui/eventlist.h index 05d9fbc87..55401bff9 100644 --- a/src/gui/eventlist.h +++ b/src/gui/eventlist.h @@ -116,7 +116,7 @@ class CEventList : public CListHelpers void showProgressBar(int pos); void hide(); void showFunctionBar(t_channel_id channel_id); - void getPrvNextChannelName(t_channel_id &channel_id,std::string &next_channel_name,std::string &prev_channel_name,std::string ¤t_channel_name, neutrino_msg_t msg); + void getChannelNames(t_channel_id &channel_id, std::string ¤t_channel_name, std::string &prev_channel_name, std::string &next_channel_name, neutrino_msg_t msg); int timerPre; int timerPost; diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 80d8af80d..b293587fa 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -499,14 +499,22 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.hdd_wakeup_msg = configfile.getInt32( "hdd_wakeup_msg", 1); //NI g_settings.hdd_allow_set_recdir = configfile.getInt32( "hdd_allow_set_recdir", 1); //NI + /* + hw_caps uses CFEManager and CFEManager needs g_settings. + So g_settings cannot use hw_caps. + + For this reason we need this workaround. + */ + bool can_shutdown = (cs_get_revision() > 7); + g_settings.shutdown_real = false; - if (g_info.hw_caps->can_shutdown) + if (can_shutdown) //(g_info.hw_caps->can_shutdown) g_settings.shutdown_real = configfile.getBool("shutdown_real" , false ); g_settings.shutdown_real_rcdelay = configfile.getBool("shutdown_real_rcdelay", false ); g_settings.shutdown_count = configfile.getInt32("shutdown_count", 0); g_settings.shutdown_min = 0; - if (g_info.hw_caps->can_shutdown) + if (can_shutdown) //(g_info.hw_caps->can_shutdown) g_settings.shutdown_min = configfile.getInt32("shutdown_min", 000); //NI g_settings.sleeptimer_min = configfile.getInt32("sleeptimer_min", 0); @@ -2252,8 +2260,6 @@ TIMER_START(); cs_new_auto_videosystem(); #endif - g_info.hw_caps = get_hwcaps(); - g_Locale = new CLocaleManager; int loadSettingsErg = loadSetup(NEUTRINO_SETTINGS_FILE); @@ -2354,6 +2360,9 @@ TIMER_START(); CheckFastScan(); + // init hw_caps *after* zapit start! + g_info.hw_caps = get_hwcaps(); + //timer start timer_wakeup = false;//init wake_up( timer_wakeup );