rewrite ServiceEventTracker and PerServiceBase service event handle code
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 27 Jun 2008 20:11:13 +0000 (20:11 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 27 Jun 2008 20:11:13 +0000 (20:11 +0000)
lib/dvb/decoder.cpp
lib/python/Components/Makefile.am
lib/python/Screens/ChannelSelection.py
lib/python/Screens/InfoBarGenerics.py
lib/service/servicedvb.cpp

index 7ad1a25d16d0cd2f0c80eee1a7bf7e08c88ab463..440317266cc7fd038afab63ee12ef90c49890dea 100644 (file)
@@ -1007,7 +1007,12 @@ RESULT eTSMPEGDecoder::setSyncMaster(int who)
 
 RESULT eTSMPEGDecoder::start()
 {
+       timespec now, tmp;
+       extern timespec service_start;
        RESULT r;
+       clock_gettime(CLOCK_MONOTONIC, &now);
+       tmp = now - service_start;
+       eDebug("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! %d:%d", tmp.tv_sec, tmp.tv_nsec);
        r = setState();
        if (r)
                return r;
index d3c51ab2a41def473b180a918f5d49b9b22c4219..df8cf9feb1ea600df657ea845629472e19ae9de1 100644 (file)
@@ -18,4 +18,4 @@ install_PYTHON = \
        MultiContent.py MediaPlayer.py TunerInfo.py VideoWindow.py ChoiceList.py \
        Element.py Playlist.py ParentalControl.py ParentalControlList.py \
        Ipkg.py SelectionList.py Scanner.py SystemInfo.py DreamInfoHandler.py \
-       Task.py
+       Task.py Thread.py
index 64ae5492e5604d70e13d61c6ca81edd1ac7490d5..57870212048ac524a46c1710205ef93e25566f61 100644 (file)
@@ -1086,7 +1086,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                                "keyTV": self.setModeTv,
                        })
 
-               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+               self.__event_tracker = ServiceEventTracker(screen=self, in_thread=True, eventmap=
                        {
                                iPlayableService.evStart: self.__evServiceStart,
                                iPlayableService.evEnd: self.__evServiceEnd
@@ -1356,7 +1356,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                                "ok": self.channelSelected,
                        })
 
-               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+               self.__event_tracker = ServiceEventTracker(screen=self, in_thread=True, eventmap=
                        {
                                iPlayableService.evStart: self.__evServiceStart,
                                iPlayableService.evEnd: self.__evServiceEnd
index 2227f8b99e4ea414a328b0ddf96eed889220d96c..9d2578585dd9ab218c2970b0a37fa3eb43d319ce 100644 (file)
@@ -62,7 +62,7 @@ class InfoBarShowHide:
                                "hide": self.hide,
                        }, 1) # lower prio to make it possible to override ok and cancel..
 
-               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+               self.__event_tracker = ServiceEventTracker(screen=self, in_thread=True, eventmap=
                        {
                                iPlayableService.evStart: self.serviceStarted,
                        })
index 307c317fecbcd55330f5b03f3ce34d1e4a94a320..f13ae50ea8a023cc4955568a1c46ad0375ba9910 100644 (file)
@@ -939,6 +939,8 @@ RESULT eDVBServiceList::setListName(const std::string &name)
        return m_bouquet->setListName(name);
 }
 
+timespec service_start;
+
 RESULT eServiceFactoryDVB::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr)
 {
        ePtr<eDVBService> service;
@@ -946,6 +948,7 @@ RESULT eServiceFactoryDVB::play(const eServiceReference &ref, ePtr<iPlayableServ
        if (r)
                service = 0;
                // check resources...
+       clock_gettime(CLOCK_MONOTONIC, &service_start);
        ptr = new eDVBServicePlay(ref, service);
        return 0;
 }