From bdf3f0dc00e03da2ae0a60b1488fefa4c7665604 Mon Sep 17 00:00:00 2001 From: Michael Liebmann Date: Sat, 10 Mar 2012 12:49:37 +0000 Subject: [PATCH] Neutrino shutdown: Optimization reworked - Shutdown functions (shutdown, reboot, soft-reboot, sighandler) optimized - Fixed error messages (delete videoDecoder). git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@2145 e54a6e83-5905-42d5-8d5c-058d10e6a962 Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/4ff2c614b5768714cc54c3386c68ee69e803dd55 Author: Michael Liebmann Date: 2012-03-10 (Sat, 10 Mar 2012) Origin message was: ------------------ * Neutrino shutdown: Optimization reworked - Shutdown functions (shutdown, reboot, soft-reboot, sighandler) optimized - Fixed error messages (delete videoDecoder). git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@2145 e54a6e83-5905-42d5-8d5c-058d10e6a962 --- src/neutrino.cpp | 22 ++++++++++++++-------- src/zapit/src/zapit.cpp | 1 - 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index df89fe861..ac10ac853 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -144,11 +144,13 @@ void * sectionsd_main_thread(void *data); extern bool timeset; // sectionsd extern cVideo * videoDecoder; +extern cDemux *videoDemux; extern cAudio * audioDecoder; cPowerManager *powerManager; cCpuFreqManager * cpuFreq; void stop_daemons(bool stopall = true); +void stop_video(void); // uncomment if you want to have a "test" menue entry (rasc) //#define __EXPERIMENTAL_CODE__ @@ -2969,8 +2971,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) standby.timer_minutes_hi = fp_timer >> 8;; standby.timer_minutes_lo = fp_timer & 0xFF; - delete videoDecoder; - cs_api_exit(); + stop_video(); int fd = open("/dev/display", O_RDONLY); if (fd < 0) { @@ -3035,7 +3036,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) delete funNotifier; } //CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_MAINMENU_REBOOT)); - delete frameBuffer; + stop_video(); #if 0 /* FIXME this next hack to test, until we find real crash on exit reason */ system("/etc/init.d/rcK"); @@ -3615,11 +3616,9 @@ int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey) delete g_fontRenderer; delete hintBox; - delete frameBuffer; stop_daemons(true); - delete videoDecoder; - cs_api_exit(); + stop_video(); /* g_Timerd, g_Zapit and CVFD are used in stop_daemons */ delete g_Timerd; delete g_Zapit; //do we really need this? @@ -3737,6 +3736,14 @@ void stop_daemons(bool stopall) } } +void stop_video() +{ + delete videoDecoder; + delete videoDemux; + delete CFrameBuffer::getInstance(); + cs_api_exit(); +} + void sighandler (int signum) { signal (signum, SIG_IGN); @@ -3745,8 +3752,7 @@ void sighandler (int signum) case SIGINT: delete CRecordManager::getInstance(); stop_daemons(); - delete videoDecoder; - cs_api_exit(); + stop_video(); _exit(0); default: break; diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index c7eee7c5a..78e9bae00 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -2121,7 +2121,6 @@ void CZapit::run() delete pcrDemux; delete pmtDemux; delete audioDecoder; - delete videoDemux; delete audioDemux; INFO("demuxes/decoders deleted");