aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/service/servicedvbrecord.cpp7
-rw-r--r--lib/service/servicedvbrecord.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp
index e150ae1d..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)
@@ -108,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;
}
@@ -170,6 +176,7 @@ int eDVBServiceRecord::doRecord()
}
m_record->setTargetFD(fd);
m_record->setTargetFilename(m_filename.c_str());
+ m_target_fd = fd;
}
eDebug("starting recording..");
diff --git a/lib/service/servicedvbrecord.h b/lib/service/servicedvbrecord.h
index 25ca3e56..dd00ee8f 100644
--- a/lib/service/servicedvbrecord.h
+++ b/lib/service/servicedvbrecord.h
@@ -32,6 +32,7 @@ private:
int m_recording, m_tuned;
std::set<int> m_pids_active;
std::string m_filename;
+ int m_target_fd;
int doPrepare();
int doRecord();