aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/nav/core.cpp25
-rw-r--r--lib/nav/core.h6
-rw-r--r--lib/nav/pcore.cpp10
-rw-r--r--lib/nav/pcore.h3
4 files changed, 44 insertions, 0 deletions
diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp
index 99dcf2ec..2dfe630d 100644
--- a/lib/nav/core.cpp
+++ b/lib/nav/core.cpp
@@ -115,6 +115,31 @@ RESULT eNavigation::stopService(void)
return 0;
}
+RESULT eNavigation::recordService(const eServiceReference &service)
+{
+ if (m_recordingService)
+ endRecording();
+
+ assert(m_servicehandler);
+ RESULT res = m_servicehandler->record(service, m_recordingService);
+ if (m_recordingService)
+ {
+ res = m_recordingService->start();
+ }
+ if (res)
+ m_recordingService = 0;
+ return res;
+}
+
+RESULT eNavigation::endRecording()
+{
+ if (!m_recordingService)
+ return -1;
+ m_recordingService->stop();
+ m_recordingService = 0;
+ return 0;
+}
+
RESULT eNavigation::pause(int dop)
{
if (!m_runningService)
diff --git a/lib/nav/core.h b/lib/nav/core.h
index 6c94fe2c..c4306e39 100644
--- a/lib/nav/core.h
+++ b/lib/nav/core.h
@@ -11,6 +11,9 @@ class eNavigation: public iObject, public Object
DECLARE_REF(eNavigation);
private:
ePtr<iPlayableService> m_runningService;
+
+ ePtr<iRecordableService> m_recordingService;
+
ePtr<iServiceHandler> m_servicehandler;
Signal2<void,eNavigation*,int> m_event;
ePtr<eConnection> m_service_event_conn;
@@ -35,6 +38,9 @@ public:
RESULT getPlaylist(ePtr<ePlaylist> &playlist);
RESULT stopService(void);
+ RESULT recordService(const eServiceReference &service);
+ RESULT endRecording();
+
RESULT pause(int p);
eNavigation(iServiceHandler *serviceHandler);
virtual ~eNavigation();
diff --git a/lib/nav/pcore.cpp b/lib/nav/pcore.cpp
index 2d036a1e..23df0030 100644
--- a/lib/nav/pcore.cpp
+++ b/lib/nav/pcore.cpp
@@ -21,6 +21,16 @@ RESULT pNavigation::playService(const eServiceReference &service)
return m_core->playService(service);
}
+RESULT pNavigation::recordService(const eServiceReference &service)
+{
+ return m_core->recordService(service);
+}
+
+RESULT pNavigation::endRecording()
+{
+ return m_core->endRecording();
+}
+
RESULT pNavigation::enqueueService(const eServiceReference &service)
{
return m_core->enqueueService(service);
diff --git a/lib/nav/pcore.h b/lib/nav/pcore.h
index 1a910b82..018209bc 100644
--- a/lib/nav/pcore.h
+++ b/lib/nav/pcore.h
@@ -24,6 +24,9 @@ public:
pNavigation();
RESULT playService(const eServiceReference &service);
+ RESULT recordService(const eServiceReference &service);
+ RESULT endRecording();
+
RESULT enqueueService(const eServiceReference &service);
RESULT getCurrentService(ePtr<iPlayableService> &service);
RESULT getPlaylist(ePtr<ePlaylist> &playlist);