diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-07 12:51:36 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-05-07 12:51:36 +0000 |
| commit | da08806fbfea06d179dd8fd6a8e78430b1cb5650 (patch) | |
| tree | 5339ac175e669f3a0fd0ae12dc30542d4cde4ea1 /lib/dvb/frontend.cpp | |
| parent | 3c3f41b61d54bae81e0f6ccea40e9d8dbe3a4337 (diff) | |
| download | enigma2-da08806fbfea06d179dd8fd6a8e78430b1cb5650.tar.gz enigma2-da08806fbfea06d179dd8fd6a8e78430b1cb5650.zip | |
fix
Diffstat (limited to 'lib/dvb/frontend.cpp')
| -rw-r--r-- | lib/dvb/frontend.cpp | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 9ff1b275..063cbe07 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -305,7 +305,7 @@ RESULT eDVBFrontendParameters::getHash(unsigned long &hash) const DEFINE_REF(eDVBFrontend); eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) - :m_type(-1), m_fe(fe), m_fd(-1), m_timeout(0), m_tuneTimer(0) + :m_type(-1), m_fe(fe), m_fd(-1), m_sn(0), m_timeout(0), m_tuneTimer(0) #if HAVE_DVB_API_VERSION < 3 ,m_secfd(-1) #endif @@ -334,35 +334,44 @@ eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) int eDVBFrontend::openFrontend() { - if (m_fd >= 0) + if (m_sn) return -1; // already opened m_state=0; m_tuning=0; #if HAVE_DVB_API_VERSION < 3 - m_secfd = ::open(m_sec_filename, O_RDWR); if (m_secfd < 0) { - eWarning("failed! (%s) %m", m_sec_filename); - return -1; + m_secfd = ::open(m_sec_filename, O_RDWR); + if (m_secfd < 0) + { + eWarning("failed! (%s) %m", m_sec_filename); + return -1; + } } + else + eWarning("sec %d already opened", m_fe); FrontendInfo fe_info; #else dvb_frontend_info fe_info; #endif eDebug("opening frontend %d", m_fe); - m_fd = ::open(m_filename, O_RDWR|O_NONBLOCK); if (m_fd < 0) { - eWarning("failed! (%s) %m", m_filename); + m_fd = ::open(m_filename, O_RDWR|O_NONBLOCK); + if (m_fd < 0) + { + eWarning("failed! (%s) %m", m_filename); #if HAVE_DVB_API_VERSION < 3 - ::close(m_secfd); - m_secfd=-1; + ::close(m_secfd); + m_secfd=-1; #endif - return -1; + return -1; + } } - + else + eWarning("frontend %d already opened", m_fe); if (m_type == -1) { if (::ioctl(m_fd, FE_GET_INFO, &fe_info) < 0) @@ -431,15 +440,19 @@ int eDVBFrontend::closeFrontend() setVoltage(iDVBFrontend::voltageOff); if (m_sec) m_sec->setRotorMoving(false); - ::close(m_fd); - m_fd=-1; + if (!::close(m_fd)) + m_fd=-1; + else + eWarning("couldnt close frontend %d", m_fe); m_data[0] = m_data[1] = m_data[2] = -1; } #if HAVE_DVB_API_VERSION < 3 if (m_secfd >= 0) { - ::close(m_secfd); - m_secfd=-1; + if (!::close(m_secfd)) + m_secfd=-1; + else + eWarning("couldnt close sec %d", m_fe); } #endif delete m_sn; |
