X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/673d85e4aace04805fe958bbe8cb741b21ccbc1b..fd13ebee91e14b0bfe9116b379644b25e6291c4d:/lib/service/servicedvbrecord.cpp diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp index a0359351..d0da074a 100644 --- a/lib/service/servicedvbrecord.cpp +++ b/lib/service/servicedvbrecord.cpp @@ -12,6 +12,7 @@ eDVBServiceRecord::eDVBServiceRecord(const eServiceReferenceDVB &ref): m_ref(ref m_state = stateIdle; m_want_record = 0; m_tuned = 0; + m_target_fd = -1; } void eDVBServiceRecord::serviceEvent(int event) @@ -48,10 +49,13 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e { eEPGCache::getInstance()->Lock(); const eit_event_struct *event = 0; + eServiceReferenceDVB ref = m_ref.getParentServiceReference(); + if (!ref.valid()) + ref = m_ref; if ( eit_event_id != -1 ) { eDebug("query epg event id %d", eit_event_id); - eEPGCache::getInstance()->lookupEventId(m_ref, eit_event_id, event); + eEPGCache::getInstance()->lookupEventId(ref, eit_event_id, event); } if ( !event && (begTime != -1 && endTime != -1) ) { @@ -64,7 +68,7 @@ RESULT eDVBServiceRecord::prepare(const char *filename, time_t begTime, time_t e beg.tm_hour, beg.tm_min, beg.tm_sec, end.tm_hour, end.tm_min, end.tm_sec, query.tm_hour, query.tm_min, query.tm_sec); - eEPGCache::getInstance()->lookupEventTime(m_ref, queryTime, event); + eEPGCache::getInstance()->lookupEventTime(ref, queryTime, event); } if ( event ) { @@ -105,6 +109,11 @@ RESULT eDVBServiceRecord::stop() { if (m_record) m_record->stop(); + if (m_target_fd >= 0) + { + ::close(m_target_fd); + m_target_fd = -1; + } m_state = statePrepared; } @@ -167,6 +176,7 @@ int eDVBServiceRecord::doRecord() } m_record->setTargetFD(fd); m_record->setTargetFilename(m_filename.c_str()); + m_target_fd = fd; } eDebug("starting recording..");