diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-11-11 15:41:18 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-11-11 15:41:18 +0000 |
| commit | f94f8561a13e8666dd43e803d45325d1a9347cb2 (patch) | |
| tree | d5808fd477be19cf880008f0cc009a29f6f5eb6c /lib/service/servicedvb.cpp | |
| parent | 2b4499ffd129b771f295ec0c2db40fec7ef177de (diff) | |
| download | enigma2-f94f8561a13e8666dd43e803d45325d1a9347cb2.tar.gz enigma2-f94f8561a13e8666dd43e803d45325d1a9347cb2.zip | |
add pause support
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index fdf93d76..f3215d82 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -365,7 +365,7 @@ RESULT eServiceFactoryDVB::lookupService(ePtr<eDVBService> &service, const eServ } eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref, eDVBService *service): - m_reference(ref), m_dvb_service(service), m_service_handler(0) + m_reference(ref), m_dvb_service(service), m_service_handler(0), m_is_paused(0) { m_is_pvr = !ref.path.empty(); @@ -518,7 +518,12 @@ RESULT eDVBServicePlay::connectEvent(const Slot2<void,iPlayableService*,int> &ev RESULT eDVBServicePlay::pause(ePtr<iPauseableService> &ptr) { - // not yet possible, maybe later... + if (m_is_pvr) + { + ptr = this; + return 0; + } + ptr = 0; return -1; } @@ -548,6 +553,26 @@ RESULT eDVBServicePlay::getLength(pts_t &len) return pvr_channel->getLength(len); } +RESULT eDVBServicePlay::pause() +{ + if (!m_is_paused && m_decoder) + { + m_is_paused = 1; + return m_decoder->freeze(0); + } else + return -1; +} + +RESULT eDVBServicePlay::unpause() +{ + if (m_is_paused && m_decoder) + { + m_is_paused = 0; + return m_decoder->unfreeze(); + } else + return -1; +} + RESULT eDVBServicePlay::seekTo(pts_t to) { return -1; |
