aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvb.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-11-11 15:41:18 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-11-11 15:41:18 +0000
commitf94f8561a13e8666dd43e803d45325d1a9347cb2 (patch)
treed5808fd477be19cf880008f0cc009a29f6f5eb6c /lib/service/servicedvb.cpp
parent2b4499ffd129b771f295ec0c2db40fec7ef177de (diff)
downloadenigma2-f94f8561a13e8666dd43e803d45325d1a9347cb2.tar.gz
enigma2-f94f8561a13e8666dd43e803d45325d1a9347cb2.zip
add pause support
Diffstat (limited to 'lib/service/servicedvb.cpp')
-rw-r--r--lib/service/servicedvb.cpp29
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;