retry frontend close every 60 seconds when frontend is busy
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 7 Dec 2005 02:36:34 +0000 (02:36 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 7 Dec 2005 02:36:34 +0000 (02:36 +0000)
lib/dvb/dvb.h
lib/dvb/frontend.cpp
lib/dvb/frontend.h

index 71c6a6c..a7be0a7 100644 (file)
@@ -21,8 +21,8 @@ class eDVBRegisteredFrontend: public iObject, public Object
        eTimer *disable;
        void closeFrontend()
        {
-               if (!m_inuse)
-                       m_frontend->closeFrontend();
+               if (!m_inuse && m_frontend->closeFrontend()) // frontend busy
+                       disable->start(60000, true);  // retry close in 60secs
        }
 public:
        eDVBRegisteredFrontend(eDVBFrontend *fe, iDVBAdapter *adap)
index 1cafcec..a348390 100644 (file)
@@ -313,7 +313,7 @@ int eDVBFrontend::openFrontend()
        return 0;
 }
 
-void eDVBFrontend::closeFrontend()
+int eDVBFrontend::closeFrontend()
 {
        if (!m_fe && m_data[7] != -1)
        {
@@ -323,7 +323,7 @@ void eDVBFrontend::closeFrontend()
                {
                        eDebug("dont close frontend %d until the linked frontend %d is still in use",
                                m_fe, linked_fe->m_frontend->getID());
-                       return;
+                       return -1;
                }
        }
        eDebug("close frontend %d", m_fe);
@@ -344,6 +344,7 @@ void eDVBFrontend::closeFrontend()
 
        setTone(iDVBFrontend::toneOff);
        setVoltage(iDVBFrontend::voltageOff);
+       return 0;
 }
 
 eDVBFrontend::~eDVBFrontend()
index 7862e2e..c702970 100644 (file)
@@ -100,7 +100,7 @@ public:
        int getID() { return m_fe; }
 
        int openFrontend();
-       void closeFrontend();
+       int closeFrontend();
 };
 
 #endif