fixes for clean enigma2 shutdown
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Sat, 6 Oct 2007 15:01:23 +0000 (15:01 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Sat, 6 Oct 2007 15:01:23 +0000 (15:01 +0000)
lib/base/ebase.h
lib/dvb/dvb.h
lib/network/serversocket.lo [deleted file]
main/enigma.cpp

index 27e4ec843f253f03de3ea9729831649fcbecae47..bab1b5f372aa71a0771595590853763a69cba646 100644 (file)
@@ -217,11 +217,14 @@ public:
                existing_loops.push_back(this);
                pthread_mutex_init(&recalcLock, 0);
        }
-       ~eMainloop()
+       virtual ~eMainloop()
        {
                existing_loops.remove(this);
                pthread_mutex_destroy(&recalcLock);
+               for (std::map<int, eSocketNotifier*>::iterator it(notifiers.begin());it != notifiers.end();++it)
+                       it->second->stop();
        }
+
        int looplevel() { return loop_level; }
 
 #ifndef SWIG
index 38d18f782c5afba91fdb460a8d3722a8baa21c32..b23d047f58592838f89fdfcac1f2a5e29bbe85d3 100644 (file)
@@ -181,11 +181,11 @@ class eDVBResourceManager: public iObject, public Object
        Connection m_cached_channel_state_changed_conn;
        eTimer m_releaseCachedChannelTimer;
        void DVBChannelStateChanged(iDVBChannel*);
-       void releaseCachedChannel();
        void feStateChanged();
 #ifndef SWIG
 public:
 #endif
+       void releaseCachedChannel();
        eDVBResourceManager();
        virtual ~eDVBResourceManager();
 
diff --git a/lib/network/serversocket.lo b/lib/network/serversocket.lo
deleted file mode 100644 (file)
index e69de29..0000000
index 64088cb5f225a98809f2d465edf8906468382290..933b20f8a1bb38ac400d6ad1fd34bac9699402e0 100644 (file)
@@ -99,19 +99,17 @@ void keyEvent(const eRCKey &key)
 class eMain: public eApplication, public Object
 {
        eInit init;
-       
-       ePtr<eDVBResourceManager> m_mgr;
+
        ePtr<eDVBDB> m_dvbdb;
+       ePtr<eDVBResourceManager> m_mgr;
        ePtr<eDVBLocalTimeHandler> m_locale_time_handler;
-       ePtr<eComponentScan> m_scan;
        ePtr<eEPGCache> m_epgcache;
 
 public:
        eMain()
        {
                init.setRunlevel(eAutoInitNumbers::main);
-
-                               /* TODO: put into init */
+               /* TODO: put into init */
                m_dvbdb = new eDVBDB();
                m_mgr = new eDVBResourceManager();
                m_locale_time_handler = new eDVBLocalTimeHandler();
@@ -122,7 +120,7 @@ public:
        ~eMain()
        {
                m_dvbdb->saveServicelist();
-               m_scan = 0;
+               m_mgr->releaseCachedChannel();
        }
 };
 
@@ -150,7 +148,7 @@ int main(int argc, char **argv)
 
        ePython python;
        eMain main;
-       
+
 #if 1
 #ifdef SDLDC
        ePtr<gSDLDC> my_dc;