diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-30 12:17:56 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-10-30 12:17:56 +0000 |
| commit | 923e3c65222946ad216cbf646b661e435a724209 (patch) | |
| tree | 6c7d53875ed3c864f943bbadf08095ca51381e3a /lib/driver/avswitch.cpp | |
| parent | 80058dea34aae48ed729986a65112f0096f5b2d5 (diff) | |
| download | enigma2-923e3c65222946ad216cbf646b661e435a724209.tar.gz enigma2-923e3c65222946ad216cbf646b661e435a724209.zip | |
disable polling the fp when driver is not ready for that
Diffstat (limited to 'lib/driver/avswitch.cpp')
| -rw-r--r-- | lib/driver/avswitch.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/driver/avswitch.cpp b/lib/driver/avswitch.cpp index 8233d97e..e9f2ece5 100644 --- a/lib/driver/avswitch.cpp +++ b/lib/driver/avswitch.cpp @@ -23,7 +23,7 @@ eAVSwitch::eAVSwitch() } else { - m_fp_notifier = new eSocketNotifier(eApp, m_fp_fd, eSocketNotifier::Read); + m_fp_notifier = new eSocketNotifier(eApp, m_fp_fd, eSocketNotifier::Read|POLLERR); CONNECT(m_fp_notifier->activated, eAVSwitch::fp_event); } } @@ -53,15 +53,27 @@ int eAVSwitch::getVCRSlowBlanking() void eAVSwitch::fp_event(int what) { - int val = FP_EVENT_VCR_SB_CHANGED; // ask only for this event - if (ioctl(m_fp_fd, FP_IOCTL_GET_EVENT, &val) < 0) - eDebug("FP_IOCTL_GET_EVENT failed (%m)"); - else if (val & FP_EVENT_VCR_SB_CHANGED) - /* emit */ vcr_sb_notifier(getVCRSlowBlanking()); + if (what & POLLERR) // driver not ready for fp polling + { + eDebug("fp driver not read for polling.. so disable polling"); + m_fp_notifier->stop(); + } + else + { + int val = FP_EVENT_VCR_SB_CHANGED; // ask only for this event + if (ioctl(m_fp_fd, FP_IOCTL_GET_EVENT, &val) < 0) + eDebug("FP_IOCTL_GET_EVENT failed (%m)"); + else if (val & FP_EVENT_VCR_SB_CHANGED) + /* emit */ vcr_sb_notifier(getVCRSlowBlanking()); + } } eAVSwitch::~eAVSwitch() { + if ( m_fp_fd >= 0 ) + close(m_fp_fd); + if (m_fp_notifier) + delete m_fp_notifier; } eAVSwitch *eAVSwitch::getInstance() |
