diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index 9e80fdb4f..3e6f8daaf 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -83,6 +83,8 @@ extern CVolume* g_volume; #define TIMESHIFT_SECONDS 3 #define ISO_MOUNT_POINT "/media/iso" +#define MUTE true +#define NO_MUTE false CMoviePlayerGui* CMoviePlayerGui::instance_mp = NULL; CMoviePlayerGui* CMoviePlayerGui::instance_bg = NULL; @@ -204,6 +206,8 @@ void CMoviePlayerGui::Init(void) blockedFromPlugin = false; m_screensaver = false; m_idletime = time(NULL); + m_mode = CTimeOSD::MODE_HIDE; + m_restore = false; } void CMoviePlayerGui::cutNeutrino() @@ -458,10 +462,31 @@ void CMoviePlayerGui::ClearQueue() milist.clear(); } -void CMoviePlayerGui::EnableClockAndMute(bool enable) + +void CMoviePlayerGui::enableOsdElements(bool mute) { - CAudioMute::getInstance()->enableMuteIcon(enable); - CInfoClock::getInstance()->enableInfoClock(enable); + if (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) +{ + if (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() @@ -565,7 +590,7 @@ bool CMoviePlayerGui::SelectFile() } #endif else if (isMovieBrowser) { - EnableClockAndMute(false); + disableOsdElements(MUTE); if (moviebrowser->exec(Path_local.c_str())) { Path_local = moviebrowser->getCurrentDir(); CFile *file = NULL; @@ -585,9 +610,9 @@ bool CMoviePlayerGui::SelectFile() ret = prepareFile(&p_movie_info->file); } else menu_ret = moviebrowser->getMenuRet(); - EnableClockAndMute(true); + enableOsdElements(MUTE); } else { // filebrowser - EnableClockAndMute(false); + disableOsdElements(MUTE); while (ret == false && filebrowser->exec(Path_local.c_str()) == true) { Path_local = filebrowser->getCurrentDir(); CFile *file = NULL; @@ -609,7 +634,7 @@ bool CMoviePlayerGui::SelectFile() } } menu_ret = filebrowser->getMenuRet(); - EnableClockAndMute(true); + enableOsdElements(MUTE); } g_settings.network_nfs_moviedir = Path_local; @@ -1199,7 +1224,7 @@ bool CMoviePlayerGui::PlayFileStart(void) if (is_file_player) selectAutoLang(); - EnableClockAndMute(true); + enableOsdElements(MUTE); return res; } @@ -1400,7 +1425,7 @@ void CMoviePlayerGui::PlayFileLoop(void) if (timeshift == TSHIFT_MODE_OFF) callInfoViewer(); } else if (!filelist.empty()) { - EnableClockAndMute(false); + disableOsdElements(MUTE); CFileBrowser *playlist = new CFileBrowser(); CFile *pfile = NULL; pfile = &(*filelist_it); @@ -1423,7 +1448,7 @@ void CMoviePlayerGui::PlayFileLoop(void) filelist_it = filelist.begin() + selected; } delete playlist; - EnableClockAndMute(true); + enableOsdElements(MUTE); } } else if (msg == (neutrino_msg_t) g_settings.mpkey_pause) { if (playstate == CMoviePlayerGui::PAUSE) { @@ -1524,14 +1549,12 @@ void CMoviePlayerGui::PlayFileLoop(void) SetPosition(1000 * (hh * 3600 + mm * 60 + ss), true); } else if (msg == CRCInput::RC_help) { + disableOsdElements(NO_MUTE); showHelp(); + enableOsdElements(NO_MUTE); } else if (msg == CRCInput::RC_info) { if (fromInfoviewer) { - CTimeOSD::mode m_mode = FileTime.getMode(); - bool restore = FileTime.IsVisible(); - if (restore) - FileTime.kill(); - CInfoClock::getInstance()->enableInfoClock(false); + disableOsdElements(NO_MUTE); #ifdef ENABLE_LUA if (isLuaPlay && haveLuaInfoFunc) { int xres = 0, yres = 0, aspectRatio = 0, framerate = -1; @@ -1550,11 +1573,7 @@ void CMoviePlayerGui::PlayFileLoop(void) } #endif fromInfoviewer = false; - CInfoClock::getInstance()->enableInfoClock(true); - if (restore) { - FileTime.setMode(m_mode); - FileTime.update(position, duration); - } + enableOsdElements(NO_MUTE); } else callInfoViewer(); @@ -2167,19 +2186,9 @@ void CMoviePlayerGui::handleMovieBrowser(neutrino_msg_t msg, int /*position*/) } } } else if (msg == NeutrinoMessages::SHOW_EPG && p_movie_info) { - CTimeOSD::mode m_mode = FileTime.getMode(); - bool restore = FileTime.IsVisible(); - if (restore) - FileTime.kill(); - CInfoClock::getInstance()->enableInfoClock(false); - + disableOsdElements(NO_MUTE); g_EpgData->show_mp(p_movie_info, position, duration); - - CInfoClock::getInstance()->enableInfoClock(true); - if (restore) { - FileTime.setMode(m_mode); - FileTime.update(position, duration); - } + enableOsdElements(NO_MUTE); } return; } diff --git a/src/gui/movieplayer.h b/src/gui/movieplayer.h index a5a00c35c..c87a71d18 100644 --- a/src/gui/movieplayer.h +++ b/src/gui/movieplayer.h @@ -189,6 +189,9 @@ 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(); @@ -221,7 +224,8 @@ class CMoviePlayerGui : public CMenuTarget void Cleanup(); void ClearFlags(); void ClearQueue(); - void EnableClockAndMute(bool enable); + void enableOsdElements(bool mute); + void disableOsdElements(bool mute); static void *ShowStartHint(void *arg); static void* bgPlayThread(void *arg); static bool sortStreamList(livestream_info_t info1, livestream_info_t info2);