aboutsummaryrefslogtreecommitdiff
path: root/lib/nav/core.cpp
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2009-01-27 21:01:47 +0100
committerghost <andreas.monzner@multimedia-labs.de>2009-01-27 21:01:47 +0100
commit80059ab78691323ff8bb30ba4db8577a5185fc6d (patch)
treef55a44e97fe3640b3911c54d2ab488d1bb86a049 /lib/nav/core.cpp
parentfdb6f80a93867b9172223f7949d78b385aaf424a (diff)
downloadenigma2-80059ab78691323ff8bb30ba4db8577a5185fc6d.tar.gz
enigma2-80059ab78691323ff8bb30ba4db8577a5185fc6d.zip
differenciate between normal and simulate recordings
simulate recordings now no more returned in normal nav.getRecordings() call.. to get a list of running simulate recordings you can use nav.getRecordings(True)
Diffstat (limited to 'lib/nav/core.cpp')
-rw-r--r--lib/nav/core.cpp47
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;
}