diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2009-02-11 12:52:48 +0100 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2009-02-11 12:52:48 +0100 |
| commit | bbfcb7ea1f040d030277e2b6f2efa9ea0967bf2b (patch) | |
| tree | c5945c791698c14723e989449e6b4bfcc275c05d /lib/nav/core.cpp | |
| parent | 4f7990ff2a55874b9eb65e3c9cd47dacb9f76deb (diff) | |
| parent | 5e6f814d005a01caa437a532e61f4b338617ff67 (diff) | |
| download | enigma2-bbfcb7ea1f040d030277e2b6f2efa9ea0967bf2b.tar.gz enigma2-bbfcb7ea1f040d030277e2b6f2efa9ea0967bf2b.zip | |
Merge branch 'master' of /home/tmbinc/enigma2-git into tmbinc/FixTimingBugs
Conflicts:
lib/dvb/decoder.cpp
Diffstat (limited to 'lib/nav/core.cpp')
| -rw-r--r-- | lib/nav/core.cpp | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp index 062a7d00..90650f68 100644 --- a/lib/nav/core.cpp +++ b/lib/nav/core.cpp @@ -72,7 +72,7 @@ RESULT eNavigation::stopService(void) return 0; } -RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordableService> &service) +RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordableService> &service, bool simulate) { assert(m_servicehandler); RESULT res = m_servicehandler->record(ref, service); @@ -81,9 +81,14 @@ RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordable service = 0; else { - ePtr<eConnection> conn; - service->connectEvent(slot(*this, &eNavigation::recordEvent), conn); - m_recordings[service]=conn; + if (simulate) + m_simulate_recordings.insert(service); + else + { + ePtr<eConnection> conn; + service->connectEvent(slot(*this, &eNavigation::recordEvent), conn); + m_recordings[service]=conn; + } } return res; } @@ -91,26 +96,40 @@ RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordable RESULT eNavigation::stopRecordService(ePtr<iRecordableService> &service) { service->stop(); - std::map<ePtr<iRecordableService>, ePtr<eConnection> >::iterator it = - m_recordings.find(service); - if (it != m_recordings.end()) + std::set<ePtr<iRecordableService> >::iterator it = + m_simulate_recordings.find(service); + if (it != m_simulate_recordings.end()) { - m_recordings.erase(it); - /* send stop event */ - m_record_event(service, iRecordableService::evEnd); + m_simulate_recordings.erase(it); return 0; } + else + { + std::map<ePtr<iRecordableService>, ePtr<eConnection> >::iterator it = + m_recordings.find(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; } -PyObject *eNavigation::getRecordings(void) +PyObject *eNavigation::getRecordings(bool simulate) { - ePyObject result = PyList_New(m_recordings.size()); + ePyObject result = PyList_New(simulate ? m_simulate_recordings.size() : m_recordings.size()); int pos=0; - for (std::map<ePtr<iRecordableService>, ePtr<eConnection> >::iterator it(m_recordings.begin()); it != m_recordings.end(); ++it) - PyList_SET_ITEM(result, pos++, NEW_iRecordableServicePtr(it->first)); + if (simulate) + for (std::set<ePtr<iRecordableService> >::iterator it(m_simulate_recordings.begin()); it != m_simulate_recordings.end(); ++it) + PyList_SET_ITEM(result, pos++, NEW_iRecordableServicePtr(*it)); + else + for (std::map<ePtr<iRecordableService>, ePtr<eConnection> >::iterator it(m_recordings.begin()); it != m_recordings.end(); ++it) + PyList_SET_ITEM(result, pos++, NEW_iRecordableServicePtr(it->first)); return result; } |
