X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d9b91542e07a2296b69141433d863fe8028b148e..5e0d91a196bfe872d04d676e5f6c2d5940786be0:/lib/nav/core.cpp diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp index 7f76fa3f..062a7d00 100644 --- a/lib/nav/core.cpp +++ b/lib/nav/core.cpp @@ -1,12 +1,12 @@ #include #include -#include +#include void eNavigation::serviceEvent(iPlayableService* service, int event) { - if (service != m_runningService) + if (m_runningService && service != m_runningService) { - eDebug("nav: event for other service"); + eDebug("nav: event %d for other service", event); return; } m_event(event); @@ -59,12 +59,15 @@ RESULT eNavigation::stopService(void) /* check if there is a running service... */ if (!m_runningService) return 1; - /* send stop event */ + + ePtr tmp = m_runningService; + m_runningService=0; + tmp->stop(); + + /* send stop event */ m_event(iPlayableService::evEnd); - m_runningService->stop(); /* kill service. */ - m_runningService = 0; m_service_event_conn = 0; return 0; } @@ -93,20 +96,21 @@ RESULT eNavigation::stopRecordService(ePtr &service) if (it != m_recordings.end()) { m_recordings.erase(it); + /* send stop event */ + m_record_event(service, iRecordableService::evEnd); return 0; } + eDebug("try to stop non running recording!!"); // this should not happen return -1; } -extern PyObject *New_iRecordableServicePtr(const ePtr &ref); // defined in enigma_python.i - PyObject *eNavigation::getRecordings(void) { - PyObject *result = PyList_New(m_recordings.size()); + ePyObject result = PyList_New(m_recordings.size()); int pos=0; for (std::map, ePtr >::iterator it(m_recordings.begin()); it != m_recordings.end(); ++it) - PyList_SET_ITEM(result, pos++, New_iRecordableServicePtr(it->first)); + PyList_SET_ITEM(result, pos++, NEW_iRecordableServicePtr(it->first)); return result; }