Ticket #437: eit-transport-walk.diff

File eit-transport-walk.diff, 1.9 KB (added by Stuart Auchterlonie, 15 years ago)

the patch

  • libs/libmythtv/eitscanner.cpp

    old new  
    135135
    136136    if (!activeScanChannels.size())
    137137    {
     138        QMap<uint, MythDeque<QString> > chanByMplex;
    138139        MSqlQuery query(MSqlQuery::InitCon());
    139140        query.prepare(
    140             "SELECT channum "
     141            "SELECT channum, mplexid "
    141142            "FROM channel, cardinput, capturecard "
    142143            "WHERE cardinput.sourceid = channel.sourceid AND "
    143144            "      capturecard.cardid = cardinput.cardid AND "
    144145            "      channel.mplexid      IS NOT NULL      AND "
    145             "      cardinput.cardid   = :CARDID "
    146             "ORDER BY cardinput.sourceid, atscsrcid");
     146            "      capturecard.dvb_on_demand = 0         AND "
     147            "      cardinput.cardid   = :CARDID ");
    147148        query.bindValue(":CARDID", rec->GetCaptureCardNum());
    148149
    149150        if (!query.exec() || !query.isActive())
     
    153154        }
    154155
    155156        while (query.next())
    156             activeScanChannels << query.value(0).toString();
     157            chanByMplex[query.value(1).toUInt()].push_back(query.value(0).toString());
     158
     159        QValueList<uint> keyList = chanByMplex.keys();
     160        QValueList<uint>::iterator curMplex = keyList.begin();
     161        int i = 0;
     162        while (i < query.size())
     163        {
     164            if(chanByMplex[*curMplex].size() != 0)
     165            {
     166                activeScanChannels << chanByMplex[*curMplex].front();
     167                chanByMplex[*curMplex].pop_front();
     168                i++;
     169            }
     170            if(++curMplex == keyList.end())
     171                curMplex = keyList.begin();
     172        }
    157173        activeScanNextChan = activeScanChannels.begin();
    158174    }
    159175