X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=main%2Fenigma.cpp;h=29469eab72f29813b050c866ce1e6f9324d66232;hb=636a782d8920b4b52a881a4565c46c06f68785b5;hp=4cc8eaf96c8c753453fe9ae18fd74dc79f94b939;hpb=c0f5089ea04bd04fe25148e712fa62cd49dc17da;p=vuplus_dvbapp diff --git a/main/enigma.cpp b/main/enigma.cpp index 4cc8eaf..29469ea 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -27,6 +27,7 @@ class eMain: public eApplication, public Object ePtr m_playservice; ePtr m_nav; ePtr m_conn_event; + ePtr m_serviceInformation; public: eMain() { @@ -38,8 +39,9 @@ public: ePtr service_center; eServiceCenter::getInstance(service_center); + assert(service_center); m_nav = new eNavigation(service_center); -#if 1 +#if 0 if (service_center) { eServiceReference ref("2:0:1:0:0:0:0:0:0:0:/"); @@ -77,8 +79,25 @@ public: void event(eNavigation *nav, int ev) { + assert(nav); + + ePtr playlist; + nav->getPlaylist(playlist); + if (playlist) + { + eDebug("PLAYLIST:"); + ePlaylist::iterator i; + for (i=playlist->begin(); i != playlist->end(); ++i) + eDebug("%s %s", i == playlist->m_current ? "-->" : " ", i->toString().c_str()); + } + switch (ev) { + case eNavigation::evStopService: + /* very important: the old service should be deallocated, so clear *all* references to it */ + m_serviceInformation = 0; + eDebug("STOP service!"); + break; case eNavigation::evNewService: { ePtr service; @@ -88,14 +107,13 @@ public: eDebug("no running service!"); break; } - ePtr s; - if (service->getIServiceInformation(s)) + if (service->getIServiceInformation(m_serviceInformation)) { eDebug("failed to get iserviceinformation"); break; } eString name; - s->getName(name); + m_serviceInformation->getName(name); eDebug("NEW running service: %s", name.c_str()); break; } @@ -104,6 +122,7 @@ public: break; case eNavigation::evPlaylistDone: eDebug("playlist done"); + quit(); break; default: eDebug("Navigation event %d", ev); @@ -113,7 +132,6 @@ public: ~eMain() { - } }; @@ -127,10 +145,13 @@ void object_dump() #endif int main() -{ +{ #ifdef OBJECT_DEBUG atexit(object_dump); #endif + eMain app; - return app.exec(); + int res = app.exec(); + eDebug("after exec"); + return res; }