diff --git a/data/scripts/install.sh b/data/scripts/install.sh index 1e3dcb8ec..26238fa8a 100755 --- a/data/scripts/install.sh +++ b/data/scripts/install.sh @@ -21,7 +21,7 @@ update_file() fi echo "update $FILE_IMAGE" rm -f $FILE_IMAGE - cp $FILE_NEW $FILE_IMAGE + cp -d $FILE_NEW $FILE_IMAGE fi } diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 3a4639bba..aba800687 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -2403,6 +2403,7 @@ void CChannelList::paint_events(CChannelEventList &evtlist) evt.description = g_Locale->getText(LOCALE_EPGLIST_NOEVENTS); evt.eventID = 0; evt.startTime = 0; + evt.duration = 0; evtlist.push_back(evt); } diff --git a/src/gui/components/cc_detailsline.cpp b/src/gui/components/cc_detailsline.cpp index 760b21fd6..cb86eb14a 100644 --- a/src/gui/components/cc_detailsline.cpp +++ b/src/gui/components/cc_detailsline.cpp @@ -88,8 +88,6 @@ CComponentsDetailLine::~CComponentsDetailLine() //paint details line with current parameters void CComponentsDetailLine::paint(bool do_save_bg) { - cc_save_bg = do_save_bg; - hide(); if (hasChanges()) clearFbData(); diff --git a/src/gui/components/cc_frm_window.cpp b/src/gui/components/cc_frm_window.cpp index 7137f76ab..80455a5ad 100644 --- a/src/gui/components/cc_frm_window.cpp +++ b/src/gui/components/cc_frm_window.cpp @@ -157,7 +157,7 @@ void CComponentsWindow::initVarWindow( const int& x_pos, const int& y_pos, const ccw_col_head = COL_MENUHEAD_PLUS_0; ccw_col_head_text = COL_MENUHEAD_TEXT; ccw_col_footer = COL_MENUFOOT_PLUS_0; - + cc_parent = NULL; page_scroll_mode = PG_SCROLL_M_OFF; //permanent disabled here, only in body used! initCCWItems(); diff --git a/src/gui/components/cc_item.cpp b/src/gui/components/cc_item.cpp index d695cbdf1..4a6f49faf 100644 --- a/src/gui/components/cc_item.cpp +++ b/src/gui/components/cc_item.cpp @@ -50,6 +50,7 @@ CComponentsItem::CComponentsItem(CComponentsForm* parent) cc_item_selected = false; cc_page_number = 0; cc_has_focus = true; + cc_parent = NULL; initParent(parent); } diff --git a/src/gui/components/cc_item_picture.cpp b/src/gui/components/cc_item_picture.cpp index c18543611..1abad278a 100644 --- a/src/gui/components/cc_item_picture.cpp +++ b/src/gui/components/cc_item_picture.cpp @@ -386,6 +386,8 @@ CComponentsChannelLogo::CComponentsChannelLogo( const int &x_pos, const int &y_p void CComponentsChannelLogo::init(const uint64_t& channelId, const std::string& channelName, bool allow_scale) { + channel_name = ""; + channel_id = 0; alt_pic_name = ""; setChannel(channelId, channelName); do_scale = allow_scale; diff --git a/src/gui/infoclock.cpp b/src/gui/infoclock.cpp index c0e8ebc58..fa4f66c5b 100644 --- a/src/gui/infoclock.cpp +++ b/src/gui/infoclock.cpp @@ -32,9 +32,11 @@ #include #include #include +#include #include +#include - +extern CTimeOSD *FileTimeOSD; CInfoClock::CInfoClock():CComponentsFrmClock( 1, 1, NULL, "%H:%M:%S", NULL, false, 1, NULL, CC_SHADOW_ON) { @@ -122,6 +124,23 @@ bool CInfoClock::enableInfoClock(bool enable) ret = StopInfoClock(); } } + + if (enable) { + if (FileTimeOSD->getRestore()) { + FileTimeOSD->setMode(FileTimeOSD->getTmpMode()); + FileTimeOSD->update(CMoviePlayerGui::getInstance().GetPosition(), + CMoviePlayerGui::getInstance().GetDuration()); + } + } + else { + if (FileTimeOSD->getMode() != CTimeOSD::MODE_HIDE) { + FileTimeOSD->setTmpMode(); + FileTimeOSD->setRestore(); + if (FileTimeOSD->getRestore()) + FileTimeOSD->kill(); + } + } + return ret; } diff --git a/src/gui/lua/lua_curl.cpp b/src/gui/lua/lua_curl.cpp index 9bcf47ef5..b5163677e 100644 --- a/src/gui/lua/lua_curl.cpp +++ b/src/gui/lua/lua_curl.cpp @@ -178,7 +178,7 @@ Example: CLuaCurl *D = CurlCheckData(L, 1); if (!D) return 0; - char errMsg[1024]; + char errMsg[1024]={0}; CURL *curl_handle = curl_easy_init(); if (!curl_handle) { memset(errMsg, '\0', sizeof(errMsg)); @@ -267,7 +267,7 @@ Example: curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L); /* enable all supported built-in compressions */ curl_easy_setopt(curl_handle, CURLOPT_ACCEPT_ENCODING, ""); - + curl_easy_setopt(curl_handle, CURLOPT_COOKIE, ""); if (!userAgent.empty()) curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, userAgent.c_str()); @@ -309,7 +309,7 @@ Example: #endif } - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE]={0}; curl_easy_setopt(curl_handle, CURLOPT_ERRORBUFFER, cerror); printf("\n[curl:download] download %s => %s\n", url.c_str(), (toFile)?outputfile.c_str():"return string"); @@ -330,7 +330,7 @@ Example: CURLcode res1 = curl_easy_getinfo(curl_handle, CURLINFO_EFFECTIVE_URL, &deffektive); CURLcode res2 = curl_easy_getinfo(curl_handle, CURLINFO_REDIRECT_URL, &dredirect); - char msg1[1024]; + char msg1[1024]={0}; memset(msg1, '\0', sizeof(msg1)); snprintf(msg1, sizeof(msg1)-1, "\n[curl:download] O.K. size: %.0f bytes, time: %.02f sec.", dsize, dtime); msg = msg1; diff --git a/src/gui/lua/lua_menue.h b/src/gui/lua/lua_menue.h index 7bee51603..dc0bf967d 100644 --- a/src/gui/lua/lua_menue.h +++ b/src/gui/lua/lua_menue.h @@ -62,7 +62,7 @@ class CLuaMenuForwarder : public CMenuTarget std::string luaId; CLuaMenuForwarder(lua_State *L, std::string _luaAction, std::string _luaId); ~CLuaMenuForwarder(); - int exec(CMenuTarget* parent, const std::string & actionKey); + int exec(CMenuTarget* parent=NULL, const std::string & actionKey=""); }; class CLuaMenuFilebrowser : public CLuaMenuForwarder @@ -74,7 +74,7 @@ class CLuaMenuFilebrowser : public CLuaMenuForwarder void Init(std::string *_value, bool _dirMode); public: CLuaMenuFilebrowser(lua_State *_L, std::string _luaAction, std::string _luaId, std::string *_value, bool _dirMode); - int exec(CMenuTarget* parent, const std::string & actionKey); + int exec(CMenuTarget* parent=NULL, const std::string & actionKey=""); void addFilter(std::string s) { filter.push_back(s); }; }; @@ -91,7 +91,7 @@ class CLuaMenuStringinput : public CLuaMenuForwarder void Init(const char *_name, std::string *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms); public: CLuaMenuStringinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, std::string *_value, int _size, std::string _valid_chars, CChangeObserver *_observ, const char *_icon, bool _sms); - int exec(CMenuTarget* parent, const std::string & actionKey); + int exec(CMenuTarget* parent=NULL, const std::string & actionKey=""); }; class CLuaMenuKeyboardinput : public CLuaMenuForwarder @@ -106,7 +106,7 @@ class CLuaMenuKeyboardinput : public CLuaMenuForwarder void Init(const char *_name, std::string *_value, int _size, CChangeObserver *_observ, const char *_icon, std::string _help, std::string _help2); public: CLuaMenuKeyboardinput(lua_State *_L, std::string _luaAction, std::string _luaId, const char *_name, std::string *_value, int _size, CChangeObserver *_observ, const char *_icon, std::string _help, std::string _help2); - int exec(CMenuTarget* parent, const std::string & actionKey); + int exec(CMenuTarget* parent=NULL, const std::string & actionKey=""); }; class CLuaInstMenu diff --git a/src/gui/movieinfo.cpp b/src/gui/movieinfo.cpp index def5a2f02..12398f9f8 100644 --- a/src/gui/movieinfo.cpp +++ b/src/gui/movieinfo.cpp @@ -497,6 +497,7 @@ void MI_MOVIE_INFO::clear(void) timePlay.tm_year = 100; timePlay.tm_mday = 0; timePlay.tm_mon = 1; + timePlay.tm_isdst = -1; file.Name = ""; file.Url = ""; diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index 727b7cf5b..e1786f0d3 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -87,6 +87,7 @@ extern cVideo * videoDecoder; extern CRemoteControl *g_RemoteControl; /* neutrino.cpp */ extern CVolume* g_volume; +extern CTimeOSD *FileTimeOSD; #define TIMESHIFT_SECONDS 3 #define ISO_MOUNT_POINT "/media/iso" @@ -222,8 +223,6 @@ void CMoviePlayerGui::Init(void) blockedFromPlugin = false; m_screensaver = false; m_idletime = time(NULL); - m_mode = CTimeOSD::MODE_HIDE; - m_restore = false; } void CMoviePlayerGui::cutNeutrino() @@ -309,6 +308,10 @@ int CMoviePlayerGui::exec(CMenuTarget * parent, const std::string & actionKey) ClearFlags(); ClearQueue(); + FileTimeOSD->kill(); + FileTimeOSD->setMode(CTimeOSD::MODE_HIDE); + time_forced = false; + if (actionKey == "tsmoviebrowser") { isMovieBrowser = true; moviebrowser->setMode(MB_SHOW_RECORDS); @@ -497,11 +500,6 @@ void CMoviePlayerGui::enableOsdElements(bool mute) CAudioMute::getInstance()->enableMuteIcon(true); CInfoClock::getInstance()->enableInfoClock(true); - - if (m_restore) { - FileTime.setMode(m_mode); - FileTime.update(position, duration); - } } void CMoviePlayerGui::disableOsdElements(bool mute) @@ -510,11 +508,6 @@ void CMoviePlayerGui::disableOsdElements(bool mute) CAudioMute::getInstance()->enableMuteIcon(false); CInfoClock::getInstance()->enableInfoClock(false); - - m_mode = FileTime.getMode(); - m_restore = FileTime.IsVisible(); - if (m_restore) - FileTime.kill(); } void CMoviePlayerGui::makeFilename() @@ -1232,8 +1225,8 @@ bool CMoviePlayerGui::PlayFileStart(void) speed = -1; playback->SetSpeed(-1); playstate = CMoviePlayerGui::REW; - if (!FileTime.IsVisible() && !time_forced) { - FileTime.switchMode(position, duration); + if (!FileTimeOSD->IsVisible() && !time_forced) { + FileTimeOSD->switchMode(position, duration); time_forced = true; } } else if (timeshift == TSHIFT_MODE_OFF || !g_settings.timeshift_pause) { @@ -1329,7 +1322,7 @@ void CMoviePlayerGui::PlayFileLoop(void) if ((playstate >= CMoviePlayerGui::PLAY) && (timeshift != TSHIFT_MODE_OFF || (playstate != CMoviePlayerGui::PAUSE))) { if (playback->GetPosition(position, duration)) { - FileTime.update(position, duration); + FileTimeOSD->update(position, duration); if (duration > 100) file_prozent = (unsigned char) (position / (duration / 100)); @@ -1364,7 +1357,7 @@ void CMoviePlayerGui::PlayFileLoop(void) if (playstate == CMoviePlayerGui::STOPPED) at_eof = true; - FileTime.update(position, duration); + FileTimeOSD->update(position, duration); } showSubtitle(0); @@ -1439,7 +1432,7 @@ void CMoviePlayerGui::PlayFileLoop(void) } else if (msg == (neutrino_msg_t) g_settings.mpkey_play) { if (time_forced) { time_forced = false; - FileTime.kill(); + FileTimeOSD->kill(); } if (playstate > CMoviePlayerGui::PLAY) { playstate = CMoviePlayerGui::PLAY; @@ -1505,7 +1498,7 @@ void CMoviePlayerGui::PlayFileLoop(void) clearSubtitle(); update_lcd = true; } else if (msg == (neutrino_msg_t) g_settings.mpkey_time) { - FileTime.switchMode(position, duration); + FileTimeOSD->switchMode(position, duration); } else if (msg == (neutrino_msg_t) g_settings.mbkey_cover) { makeScreenShot(false, true); } else if (msg == (neutrino_msg_t) g_settings.key_screenshot) { @@ -1527,8 +1520,8 @@ void CMoviePlayerGui::PlayFileLoop(void) updateLcd(); } - if (!FileTime.IsVisible() && !time_forced) { - FileTime.switchMode(position, duration); + if (!FileTimeOSD->IsVisible() && !time_forced) { + FileTimeOSD->switchMode(position, duration); time_forced = true; } if (timeshift == TSHIFT_MODE_OFF) @@ -1604,8 +1597,8 @@ void CMoviePlayerGui::PlayFileLoop(void) update_lcd = true; clearSubtitle(); } else if (timeshift != TSHIFT_MODE_OFF && (msg == CRCInput::RC_text || msg == CRCInput::RC_epg || msg == NeutrinoMessages::SHOW_EPG)) { - bool restore = FileTime.IsVisible(); - FileTime.kill(); + bool restore = FileTimeOSD->IsVisible(); + FileTimeOSD->kill(); if (msg == CRCInput::RC_epg ) g_EventList->exec(CNeutrinoApp::getInstance()->channelList->getActiveChannel_ChannelID(), CNeutrinoApp::getInstance()->channelList->getActiveChannelName()); @@ -1618,15 +1611,15 @@ void CMoviePlayerGui::PlayFileLoop(void) frameBuffer->paintBackground(); } if (restore) - FileTime.show(position); + FileTimeOSD->show(position); #if 0 } else if (msg == CRCInput::RC_red) { - bool restore = FileTime.IsVisible(); - FileTime.kill(); + bool restore = FileTimeOSD->IsVisible(); + FileTimeOSD->kill(); CStreamInfo2 streaminfo; streaminfo.exec(NULL, ""); if (restore) - FileTime.show(position); + FileTimeOSD->show(position); update_lcd = true; #endif } else if (msg == NeutrinoMessages::SHOW_EPG) { @@ -1657,12 +1650,12 @@ void CMoviePlayerGui::PlayFileLoop(void) } else if (msg == (neutrino_msg_t) CRCInput::RC_setup) { CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::SHOW_MAINMENU, 0); } else if (msg == CRCInput::RC_red || msg == CRCInput::RC_green || msg == CRCInput::RC_yellow || msg == CRCInput::RC_blue ) { - //maybe move FileTime.kill to Usermenu to simplify this call - bool restore = FileTime.IsVisible(); - FileTime.kill(); + //maybe move FileTimeOSD->kill to Usermenu to simplify this call + bool restore = FileTimeOSD->IsVisible(); + FileTimeOSD->kill(); CNeutrinoApp::getInstance()->usermenu.showUserMenu(msg); if (restore) - FileTime.show(position); + FileTimeOSD->show(position); update_lcd = true; } else { if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & messages_return::cancel_all) { @@ -1697,7 +1690,7 @@ void CMoviePlayerGui::PlayFileEnd(bool restore) { printf("%s: stopping, this %p thread %p\n", __func__, this, CMoviePlayerGui::bgPlayThread);fflush(stdout); if (filelist_it == filelist.end()) - FileTime.kill(); + FileTimeOSD->kill(); clearSubtitle(); playback->SetSpeed(1); @@ -2223,7 +2216,7 @@ void CMoviePlayerGui::UpdatePosition() if (playback->GetPosition(position, duration)) { if (duration > 100) file_prozent = (unsigned char) (position / (duration / 100)); - FileTime.update(position, duration); + FileTimeOSD->update(position, duration); #ifdef DEBUG printf("CMoviePlayerGui::%s: spd %d pos %d/%d (%d, %d%%)\n", __func__, speed, position, duration, duration-position, file_prozent); #endif diff --git a/src/gui/movieplayer.h b/src/gui/movieplayer.h index b0da2d4c2..3d59912c1 100644 --- a/src/gui/movieplayer.h +++ b/src/gui/movieplayer.h @@ -118,7 +118,6 @@ class CMoviePlayerGui : public CMenuTarget int startposition; int position; int duration; - CTimeOSD FileTime; unsigned short numpida; unsigned short vpid; @@ -189,9 +188,6 @@ class CMoviePlayerGui : public CMenuTarget static CMoviePlayerGui* instance_mp; static CMoviePlayerGui* instance_bg; - CTimeOSD::mode m_mode; - bool m_restore; - void Init(void); void PlayFile(); bool PlayFileStart(); @@ -242,7 +238,6 @@ class CMoviePlayerGui : public CMenuTarget int exec(CMenuTarget* parent, const std::string & actionKey); bool Playing() { return playing; }; - bool osdTimeVisible() { return FileTime.IsVisible(); }; std::string CurrentAudioName() { return currentaudioname; }; int GetSpeed() { return speed; } int GetPosition() { return position; } diff --git a/src/gui/opkg_manager.cpp b/src/gui/opkg_manager.cpp index 229bad58d..be24d6a45 100644 --- a/src/gui/opkg_manager.cpp +++ b/src/gui/opkg_manager.cpp @@ -221,7 +221,7 @@ int COPKGManager::exec(CMenuTarget* parent, const string &actionKey) { string pkg_name = fileBrowser.getSelectedFile()->Name; if (!installPackage(pkg_name)) - showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), "", pkg_name); + showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), NULL, pkg_name); /* errno is never set properly, the string is totally useless. showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), strerror(errno), pkg_name); */ @@ -239,7 +239,7 @@ int COPKGManager::exec(CMenuTarget* parent, const string &actionKey) /* errno is never set properly, the string is totally useless. showError(g_Locale->getText(LOCALE_OPKG_FAILURE_UPGRADE), strerror(errno), actionKey); */ - showError(g_Locale->getText(LOCALE_OPKG_FAILURE_UPGRADE), "", actionKey); + showError(g_Locale->getText(LOCALE_OPKG_FAILURE_UPGRADE), NULL, actionKey); } else installed = true; refreshMenu(); @@ -1016,7 +1016,7 @@ bool COPKGManager::installPackage(const string& pkg_name, string options, bool f break; } default: - showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), "", pkg_types[OM_INSTALL] + opts + pkg_name); + showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), NULL, pkg_types[OM_INSTALL] + opts + pkg_name); /* errno / strerror considered useless here showError(g_Locale->getText(LOCALE_OPKG_FAILURE_INSTALL), strerror(errno), pkg_types[OM_INSTALL] + opts + pkg_name); */ diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index 2ac4e8a99..ee7bc8b62 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -69,6 +70,7 @@ extern CRemoteControl * g_RemoteControl; extern const char * locale_real_names[]; extern std::string ttx_font_file; +extern CTimeOSD *FileTimeOSD; COsdSetup::COsdSetup(int wizard_mode) { @@ -1301,19 +1303,19 @@ void COsdSetup::showOsdInfoclockSetup(CMenuWidget *menu_infoclock) { menu_infoclock->addIntroItems(LOCALE_MISCSETTINGS_INFOCLOCK); - CMenuOptionChooser *mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOCLOCK, &g_settings.mode_clock, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, NULL, CRCInput::RC_red); + CMenuOptionChooser *mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOCLOCK, &g_settings.mode_clock, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::RC_red); mc->setHint("", LOCALE_MENU_HINT_CLOCK_MODE); menu_infoclock->addItem(mc); menu_infoclock->addItem(GenericMenuSeparatorLine); // size of info clock - CMenuOptionNumberChooser* mn = new CMenuOptionNumberChooser(LOCALE_CLOCK_SIZE_HEIGHT, &g_settings.infoClockFontSize, true, 30, 120); + CMenuOptionNumberChooser* mn = new CMenuOptionNumberChooser(LOCALE_CLOCK_SIZE_HEIGHT, &g_settings.infoClockFontSize, true, 30, 120, this); mn->setHint("", LOCALE_MENU_HINT_CLOCK_SIZE); menu_infoclock->addItem(mn); // clock with seconds - mc = new CMenuOptionChooser(LOCALE_CLOCK_SECONDS, &g_settings.infoClockSeconds, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); + mc = new CMenuOptionChooser(LOCALE_CLOCK_SECONDS, &g_settings.infoClockSeconds, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this); mc->setHint("", LOCALE_MENU_HINT_CLOCK_SECONDS); menu_infoclock->addItem(mc); @@ -1406,6 +1408,12 @@ bool COsdSetup::changeNotify(const neutrino_locale_t OptionName, void * data) CVolumeHelper::getInstance()->refresh(); return false; } + else if ((ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_INFOCLOCK)) || + (ARE_LOCALES_EQUAL(OptionName, LOCALE_CLOCK_SIZE_HEIGHT)) || + (ARE_LOCALES_EQUAL(OptionName, LOCALE_CLOCK_SECONDS))) { + CInfoClock::getInstance()->ClearDisplay(); + FileTimeOSD->Init(); + } return false; } diff --git a/src/gui/streaminfo2.cpp b/src/gui/streaminfo2.cpp index 801b54536..a3a32cc45 100644 --- a/src/gui/streaminfo2.cpp +++ b/src/gui/streaminfo2.cpp @@ -615,12 +615,17 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos) average_bitrate_pos = ypos += iheight; //AUDIOTYPE ypos += iheight; - int type, layer, freq, mode, lbitrate; - audioDecoder->getAudioInfo(type, layer, freq, lbitrate, mode); snprintf(buf, sizeof(buf), "%s:", g_Locale->getText (LOCALE_STREAMINFO_AUDIOTYPE)); g_Font[font_info]->RenderString (xpos, ypos, box_width, buf, COL_MENUCONTENT_TEXT); + int type, layer, freq, mode, lbitrate; + /* + audioDecoder->getAudioInfo() seems broken in libcoolstream2. + ddmode is always 1 ("CH1/CH2"). + */ + audioDecoder->getAudioInfo(type, layer, freq, lbitrate, mode); + if (type == AUDIO_FMT_MPEG) { const char *mpegmodes[] = diff --git a/src/gui/timeosd.cpp b/src/gui/timeosd.cpp index 8d631319e..597d2b2b2 100644 --- a/src/gui/timeosd.cpp +++ b/src/gui/timeosd.cpp @@ -32,12 +32,16 @@ #include #include #include +#include #include #include "screensaver.h" CTimeOSD::CTimeOSD():CComponentsFrmClock( 1, 1, NULL, "%H:%M:%S", NULL, false, 1, NULL, CC_SHADOW_ON) { + m_mode = MODE_HIDE; + tmp_mode = MODE_HIDE; + m_restore = false; Init(); } @@ -45,7 +49,6 @@ void CTimeOSD::Init() { paint_bg = g_settings.infoClockBackground; m_time_show = time(0); - m_mode = MODE_HIDE; //use current theme colors setColorAll(COL_FRAME_PLUS_0, COL_MENUCONTENT_PLUS_0, COL_SHADOW_PLUS_0); @@ -59,13 +62,7 @@ void CTimeOSD::Init() setColorBody(COL_BACKGROUND_PLUS_0); } - //set height, NOTE: height is strictly bound to settings - if (g_settings.infoClockFontSize != height){ - height = g_settings.infoClockFontSize; - int dx = 0; - int dy = height; - setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); - } + setClockFont(CInfoClock::getInstance()->getClockFont()); // set corner radius depending on clock height corner_rad = (g_settings.rounded_corners) ? std::max(height/10, CORNER_RADIUS_SMALL) : 0; @@ -84,6 +81,14 @@ CTimeOSD::~CTimeOSD() } #endif +CTimeOSD* CTimeOSD::getInstance() +{ + static CTimeOSD* timeOSD = NULL; + if(!timeOSD) + timeOSD = new CTimeOSD(); + return timeOSD; +} + void CTimeOSD::initTimeString() { struct tm t; diff --git a/src/gui/timeosd.h b/src/gui/timeosd.h index cf15b7643..c79da7dec 100644 --- a/src/gui/timeosd.h +++ b/src/gui/timeosd.h @@ -42,10 +42,10 @@ class CTimeOSD : public CComponentsFrmClock private: CProgressBar timescale; - mode m_mode; + mode m_mode, tmp_mode; + bool m_restore; time_t m_time_show; - void Init(); void initTimeString(); void updatePos(int position, int duration); void KillAndResetTimescale(); @@ -53,6 +53,8 @@ class CTimeOSD : public CComponentsFrmClock public: CTimeOSD(); // ~CTimeOSD(); is inherited + void Init(); + static CTimeOSD* getInstance(); void show(time_t time_show, bool force = true); void kill(); bool IsVisible() {return m_mode != MODE_HIDE;} @@ -60,6 +62,10 @@ class CTimeOSD : public CComponentsFrmClock void switchMode(int position, int duration); mode getMode() { return m_mode; }; void setMode (mode mode_) { m_mode = mode_; }; + mode getTmpMode() { return tmp_mode; }; + void setTmpMode () { tmp_mode = m_mode; }; + bool getRestore() { return m_restore; }; + void setRestore() { m_restore = (m_mode != MODE_HIDE); }; void setHeight(const int){}//NOTE: dummy member, height is strictly bound to settings }; #endif diff --git a/src/gui/tmdb.cpp b/src/gui/tmdb.cpp index e4e65b70a..8ebe101c1 100644 --- a/src/gui/tmdb.cpp +++ b/src/gui/tmdb.cpp @@ -128,7 +128,7 @@ bool cTmdb::getUrl(std::string &url, std::string &answer, CURL *_curl_handle) } } - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE] = {0}; curl_easy_setopt(_curl_handle, CURLOPT_ERRORBUFFER, cerror); printf("try to get [%s] ...\n", url.c_str()); @@ -169,7 +169,7 @@ bool cTmdb::DownloadUrl(std::string url, std::string file, CURL *_curl_handle) } } - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE] = {0}; curl_easy_setopt(_curl_handle, CURLOPT_ERRORBUFFER, cerror); printf("try to get [%s] ...\n", url.c_str()); diff --git a/src/gui/volumebar.cpp b/src/gui/volumebar.cpp index 982c15e12..58a41f7d9 100644 --- a/src/gui/volumebar.cpp +++ b/src/gui/volumebar.cpp @@ -33,9 +33,12 @@ #include #include +#include #include #include +extern CTimeOSD *FileTimeOSD; + using namespace std; @@ -134,7 +137,7 @@ void CVolumeBar::initVolumeBarPosition() break; } case VOLUMEBAR_POS_TOP_LEFT: - if (CMoviePlayerGui::getInstance().osdTimeVisible()) + if (FileTimeOSD->IsVisible()) y = clock_y + clock_height + v_spacer + OFFSET_SHADOW; break; case VOLUMEBAR_POS_BOTTOM_LEFT: diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index de132a9e2..ee882f3dd 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -550,6 +550,7 @@ CMenuWidget::CMenuWidget() info_box = NULL; header = NULL; nextShortcut = 1; + x = y = 0; } CMenuWidget::CMenuWidget(const neutrino_locale_t Name, const std::string & Icon, const int mwidth, const mn_widget_id_t &w_index) @@ -624,6 +625,7 @@ void CMenuWidget::Init(const std::string &Icon, const int mwidth, const mn_widge nextShortcut = 1; saveScreen_width = 0; saveScreen_height = 0; + x = y = 0; } void CMenuWidget::move(int xoff, int yoff) @@ -1451,6 +1453,8 @@ void CMenuWidget::paintHint(int pos) if (info_box) { savescreen ? info_box->hide() : info_box->kill(); hint_painted = info_box->isPainted(); + if (details_line) + details_line->hide(); } return; } diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 0b3bd4292..8cff8efa5 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -99,6 +99,7 @@ #include "gui/widget/menue.h" #include "gui/widget/msgbox.h" #include "gui/infoclock.h" +#include "gui/timeosd.h" #include "gui/parentallock_setup.h" #ifdef ENABLE_PIP #include "gui/pipsetup.h" @@ -145,6 +146,7 @@ int old_b_id = -1; CInfoClock *InfoClock; +CTimeOSD *FileTimeOSD; int allow_flash = 1; Zapit_config zapitCfg; char zapit_lat[20]="#"; @@ -2212,6 +2214,8 @@ TIMER_START(); g_RemoteControl = new CRemoteControl; g_EpgData = new CEpgData; + InfoClock = CInfoClock::getInstance(); + FileTimeOSD = CTimeOSD::getInstance(); g_InfoViewer = new CInfoViewer; g_EventList = new CEventList; @@ -2403,9 +2407,6 @@ void CNeutrinoApp::RealRun() dprintf(DEBUG_NORMAL, "initialized everything\n"); - //activating infoclock - InfoClock = CInfoClock::getInstance(); - if(g_settings.power_standby || init_cec_setting) standbyMode(true, true); @@ -3689,6 +3690,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) my_system("/etc/init.d/rcK"); sync(); + CFSMounter::umount(); // unreachable NFS server my_system(2,"/bin/umount", "-a"); sleep(1); @@ -4372,6 +4374,8 @@ void stop_daemons(bool stopall, bool for_flash) videoDecoder->SetCECMode((VIDEO_HDMI_CEC_MODE)0); } + delete InfoClock; + delete FileTimeOSD; delete &CMoviePlayerGui::getInstance(); CZapit::getInstance()->Stop(); diff --git a/src/system/ytcache.cpp b/src/system/ytcache.cpp index 64dcb6672..0f04358f4 100644 --- a/src/system/ytcache.cpp +++ b/src/system/ytcache.cpp @@ -148,7 +148,7 @@ bool cYTCache::download(MI_MOVIE_INFO *mi) curl_easy_setopt(curl, CURLOPT_NOPROGRESS, (long)0); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE] = {0}; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, cerror); if(!g_settings.softupdate_proxyserver.empty()) { diff --git a/src/system/ytparser.cpp b/src/system/ytparser.cpp index 6f4418c49..928df3afe 100644 --- a/src/system/ytparser.cpp +++ b/src/system/ytparser.cpp @@ -151,7 +151,7 @@ bool cYTFeedParser::getUrl(std::string &url, std::string &answer, CURL *_curl_ha } } - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE] = {0}; curl_easy_setopt(_curl_handle, CURLOPT_ERRORBUFFER, cerror); printf("try to get [%s] ...\n", url.c_str()); @@ -192,7 +192,7 @@ bool cYTFeedParser::DownloadUrl(std::string &url, std::string &file, CURL *_curl } } - char cerror[CURL_ERROR_SIZE]; + char cerror[CURL_ERROR_SIZE] = {0}; curl_easy_setopt(_curl_handle, CURLOPT_ERRORBUFFER, cerror); printf("try to get [%s] ...\n", url.c_str());