From: Felix Domke Date: Fri, 27 Jan 2006 23:56:49 +0000 (+0000) Subject: add isCurrentlSeekable to iPlayableService X-Git-Tag: 2.6.0~4243 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/28ddb2c21514dc49826847b38f60bf3a663be551 add isCurrentlSeekable to iPlayableService --- diff --git a/lib/service/iservice.h b/lib/service/iservice.h index bc8d0244..2f489b17 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -310,6 +310,7 @@ public: /* if you want to do several seeks in a row, you can enable the trickmode. audio will be switched off, sync will be disabled etc. */ virtual RESULT setTrickmode(int trick=0)=0; + virtual RESULT isCurrentlySeekable()=0; }; TEMPLATE_TYPEDEF(ePtr, iSeekableServicePtr); diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 7beb6c25..650b609e 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -712,7 +712,7 @@ RESULT eDVBServicePlay::setFastForward(int ratio) RESULT eDVBServicePlay::seek(ePtr &ptr) { - if (m_is_pvr || m_timeshift_active) + if (m_is_pvr || m_timeshift_enabled) { ptr = this; return 0; @@ -722,15 +722,13 @@ RESULT eDVBServicePlay::seek(ePtr &ptr) return -1; } + /* TODO: when timeshift is enabled but not active, this doesn't work. */ RESULT eDVBServicePlay::getLength(pts_t &len) { ePtr pvr_channel; - if (m_service_handler.getPVRChannel(pvr_channel)) - { - eDebug("getPVRChannel failed!"); + if ((m_timeshift_enabled ? m_service_handler_timeshift : m_service_handler).getPVRChannel(pvr_channel)) return -1; - } return pvr_channel->getLength(len); } @@ -815,6 +813,11 @@ RESULT eDVBServicePlay::setTrickmode(int trick) return 0; } +RESULT eDVBServicePlay::isCurrentlySeekable() +{ + return m_is_pvr || m_timeshift_active; +} + RESULT eDVBServicePlay::frontendStatusInfo(ePtr &ptr) { ptr = this; @@ -1140,6 +1143,7 @@ RESULT eDVBServicePlay::stopTimeshift() m_record = 0; close(m_timeshift_fd); + eDebug("remove timeshift file"); remove(m_timeshift_file.c_str()); return 0; diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h index 2929397a..a07e4410 100644 --- a/lib/service/servicedvb.h +++ b/lib/service/servicedvb.h @@ -88,6 +88,7 @@ public: RESULT seekRelative(int direction, pts_t to); RESULT getPlayPosition(pts_t &pos); RESULT setTrickmode(int trick=0); + RESULT isCurrentlySeekable(); // iServiceInformation RESULT getName(std::string &name);