dvb.cpp: another dm500hd/dm800 demux policy fix
authorghost <andreas.monzner@multimedia-labs.de>
Sun, 31 May 2009 15:50:58 +0000 (17:50 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Sun, 31 May 2009 15:51:21 +0000 (17:51 +0200)
lib/dvb/dvb.cpp

index 3c2c22af77949abc02e74018ac2c402c0308071c..d30be29cbc00c6791fc873ca5e95af9fed70a302 100644 (file)
@@ -438,14 +438,24 @@ RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
                                if (!unused)
                                        unused = i;
                        }
-                       else if (!fe || (i->m_adapter == fe->m_adapter &&
-                           i->m_demux->getSource() == fe->m_frontend->getDVBID()))
+                       else
                        {
-                               demux = new eDVBAllocatedDemux(i);
-                               return 0;
+                               if (fe)
+                               {
+                                       if (i->m_adapter == fe->m_adapter && 
+                                           i->m_demux->getSource() == fe->m_frontend->getDVBID())
+                                       {
+                                               demux = new eDVBAllocatedDemux(i);
+                                               return 0;
+                                       }
+                               }
+                               else if (i->m_demux->getSource() == -1) // PVR
+                               {
+                                       demux = new eDVBAllocatedDemux(i);
+                                       return 0;
+                               }
                        }
                }
-       
        }
        else if (m_demux.size() < 5) // ATI
        {