Support Uno4k/Ultimo4k
[vuplus_dvbapp] / lib / nav / core.cpp
index 90650f6..cfb132f 100644 (file)
@@ -1,6 +1,7 @@
 #include <lib/nav/core.h>
 #include <lib/base/eerror.h>
 #include <lib/python/python.h>
+#include <lib/dvb/fcc.h>
 
 void eNavigation::serviceEvent(iPlayableService* service, int event)
 {
@@ -24,12 +25,18 @@ void eNavigation::recordEvent(iRecordableService* service, int event)
 
 RESULT eNavigation::playService(const eServiceReference &service)
 {
-       stopService();
-       
-       assert(m_servicehandler);
-       RESULT res = m_servicehandler->play(service, m_runningService);
+       RESULT res = -1;
+
+       if (m_fccmgr->tryFCCService(service, m_runningService) == -1)
+       {
+               stopService();
+               ASSERT(m_servicehandler);
+               res = m_servicehandler->play(service, m_runningService);
+       }
+
        if (m_runningService)
        {
+               m_runningService->setTarget(m_decoder);
                m_runningService->connectEvent(slot(*this, &eNavigation::serviceEvent), m_service_event_conn);
                res = m_runningService->start();
        }
@@ -69,12 +76,14 @@ RESULT eNavigation::stopService(void)
 
                /* kill service. */
        m_service_event_conn = 0;
+
+       m_fccmgr->cleanupFCCService();
        return 0;
 }
 
 RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordableService> &service, bool simulate)
 {
-       assert(m_servicehandler);
+       ASSERT(m_servicehandler);
        RESULT res = m_servicehandler->record(ref, service);
        eDebug("record: %d", res);
        if (res)
@@ -146,10 +155,12 @@ RESULT eNavigation::pause(int dop)
                return p->unpause();
 }
 
-eNavigation::eNavigation(iServiceHandler *serviceHandler)
+eNavigation::eNavigation(iServiceHandler *serviceHandler, int decoder)
 {
-       assert(serviceHandler);
+       ASSERT(serviceHandler);
        m_servicehandler = serviceHandler;
+       m_decoder = decoder;
+       m_fccmgr = new eFCCServiceManager(this);
 }
 
 eNavigation::~eNavigation()