diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-04-09 21:54:13 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-04-09 21:54:13 +0000 |
| commit | e7bc6dda564f72ea1ed33a4d420cbce75b37879c (patch) | |
| tree | ce0f83c540d65995692f570e547f9df8a0df32cb | |
| parent | 5f45eb94454f5787d87725c9d2a73cecc84eda11 (diff) | |
| download | enigma2-e7bc6dda564f72ea1ed33a4d420cbce75b37879c.tar.gz enigma2-e7bc6dda564f72ea1ed33a4d420cbce75b37879c.zip | |
fix fd leak for recordings
| -rw-r--r-- | lib/service/servicedvbrecord.cpp | 7 | ||||
| -rw-r--r-- | lib/service/servicedvbrecord.h | 1 |
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(); |
