diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-07-29 01:09:09 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-07-29 01:09:09 +0000 |
| commit | d5e22a275d2ecdf3205bfefa927be6e125ac27b8 (patch) | |
| tree | 91b5fda2f2dacce923ec56ea52fecad6f94de873 /lib/service | |
| parent | 1d9b83e416ec6471e53844c80626dbf22a411e90 (diff) | |
| download | enigma2-d5e22a275d2ecdf3205bfefa927be6e125ac27b8.tar.gz enigma2-d5e22a275d2ecdf3205bfefa927be6e125ac27b8.zip | |
- add movie selector
Diffstat (limited to 'lib/service')
| -rw-r--r-- | lib/service/iservice.h | 4 | ||||
| -rw-r--r-- | lib/service/servicedvb.cpp | 6 | ||||
| -rw-r--r-- | lib/service/servicedvb.h | 1 | ||||
| -rw-r--r-- | lib/service/servicefs.cpp | 19 | ||||
| -rw-r--r-- | lib/service/servicefs.h | 4 |
5 files changed, 34 insertions, 0 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 4592a971..7e24f9c1 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -208,7 +208,11 @@ TEMPLATE_TYPEDEF(ePtr<iRecordableService>, iRecordableServicePtr); class iListableService: public iObject { public: + /* legacy interface: get a list */ virtual RESULT getContent(std::list<eServiceReference> &list)=0; + + /* new, shiny interface: streaming. */ + virtual RESULT getNext(eServiceReference &ptr)=0; }; TEMPLATE_TYPEDEF(ePtr<iListableService>, iListableServicePtr); diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index a32ce326..5bd25f67 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -78,6 +78,12 @@ RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list) return 0; } +RESULT eDVBServiceList::getNext(eServiceReference &) +{ + /* implement me */ + return -1; +} + RESULT eServiceFactoryDVB::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr) { ePtr<eDVBService> service; diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h index e9489cd5..5c750430 100644 --- a/lib/service/servicedvb.h +++ b/lib/service/servicedvb.h @@ -34,6 +34,7 @@ private: public: virtual ~eDVBServiceList(); RESULT getContent(std::list<eServiceReference> &list); + RESULT getNext(eServiceReference &ptr); }; class eDVBServicePlay: public iPlayableService, public Object, public iServiceInformation diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp index 9db85028..739dd0a6 100644 --- a/lib/service/servicefs.cpp +++ b/lib/service/servicefs.cpp @@ -81,6 +81,7 @@ DEFINE_REF(eServiceFS); eServiceFS::eServiceFS(const char *path): path(path) { + m_list_valid = 0; } eServiceFS::~eServiceFS() @@ -132,4 +133,22 @@ RESULT eServiceFS::getContent(std::list<eServiceReference> &list) return 0; } +RESULT eServiceFS::getNext(eServiceReference &ptr) +{ + if (!m_list_valid) + { + m_list_valid = 1; + int res = getContent(m_list); + if (res) + return res; + } + + if (!m_list.size()) + return -ERANGE; + + ptr = m_list.front(); + m_list.pop_front(); + return 0; +} + eAutoInitPtr<eServiceFactoryFS> init_eServiceFactoryFS(eAutoInitNumbers::service+1, "eServiceFactoryFS"); diff --git a/lib/service/servicefs.h b/lib/service/servicefs.h index 61fcb4a9..e87b53a2 100644 --- a/lib/service/servicefs.h +++ b/lib/service/servicefs.h @@ -27,10 +27,14 @@ private: std::string path; friend class eServiceFactoryFS; eServiceFS(const char *path); + + int m_list_valid; + std::list<eServiceReference> m_list; public: virtual ~eServiceFS(); RESULT getContent(std::list<eServiceReference> &list); + RESULT getNext(eServiceReference &ptr); }; #endif |
