Ticket #2756: scan_input_fix.diff

File scan_input_fix.diff, 3.8 KB (added by spam@…, 14 years ago)

scanner source patch

  • siscan.cpp

     
    8181 *   HandleDVBDBInsertion() and HandleMPEGDBInsertion() are similar.
    8282 */
    8383
    84 /** \fn SIScan::SIScan(QString,ChannelBase*,int,uint,uint)
     84/** \fn SIScan::SIScan(QString,ChannelBase*,int,uint,uint,int)
    8585 */
    8686SIScan::SIScan(QString _cardtype, ChannelBase* _channel, int _sourceID,
    87                uint signal_timeout, uint channel_timeout)
     87               uint signal_timeout, uint channel_timeout, int _cardID)
    8888    : // Set in constructor
    8989      channel(_channel),
    9090      signalMonitor(SignalMonitor::Init(_cardtype, -1, _channel)),
     
    9292      scanMode(IDLE),
    9393      signalTimeout(signal_timeout),
    9494      channelTimeout(channel_timeout),
     95      cardID(_cardID),
    9596      // Settable
    9697      ignoreAudioOnlyServices(false),
    9798      ignoreDataServices(false),
     
    688689#endif // USING_DVB
    689690
    690691    // TODO we should actually use the input the user specifies...
    691     QString inputname = ChannelUtil::GetInputName(item.SourceID);
     692    QString inputname = ChannelUtil::GetInputName(cardID,item.SourceID);
    692693
    693694    if (!GetDTVChannel())
    694695        return false;
  • siscan.h

     
    4545    Q_OBJECT
    4646  public:
    4747    SIScan(QString _cardtype, ChannelBase* _channel, int _sourceID,
    48            uint signal_timeout, uint channel_timeout);
     48           uint signal_timeout, uint channel_timeout, int _cardID);
    4949    ~SIScan();
    5050
    5151    void StartScanner(void);
     
    180180    SCANMODE          scanMode;
    181181    uint              signalTimeout;
    182182    uint              channelTimeout;
     183    int               cardID;
    183184
    184185    // Settable
    185186    bool              ignoreAudioOnlyServices;
  • scanwizardscanner.cpp

     
    522522    }
    523523
    524524    scanner = new SIScan(card_type, channel, sourceid,
    525                          signal_timeout, channel_timeout);
     525                         signal_timeout, channel_timeout, pcardid);
    526526
    527527    scanner->SetForceUpdate(true);
    528528
  • channelutil.h

     
    198198     */
    199199    static QString GetServiceName(int chanid);
    200200    static int     GetSourceID(int mplexid);
    201     static QString GetInputName(int sourceid);
     201    static QString GetInputName(int cardid, int sourceid);
    202202    static int     GetInputID(int sourceid, int cardid);
    203203    static QString GetDTVPrivateType(uint networkid, const QString &key,
    204204                                     const QString sitype = "dvb");
  • channelutil.cpp

     
    699699    return -1;
    700700}
    701701
    702 /** \fn ChannelUtil::GetInputName(int)
     702/** \fn ChannelUtil::GetInputName(int, int)
    703703 *  \brief Returns input name for a card input
    704  *  NOTE: This is BROKEN, it does not specify which card the input is on.
    705704 */
    706 QString ChannelUtil::GetInputName(int source_id)
     705QString ChannelUtil::GetInputName(int card_id, int source_id)
    707706{
    708707    QString inputname = QString::null;
    709708
    710709    MSqlQuery query(MSqlQuery::InitCon());
    711710    query.prepare("SELECT inputname "
    712711                  "FROM cardinput "
    713                   "WHERE sourceid = :SOURCEID");
     712                  "WHERE sourceid = :SOURCEID AND "
     713                  "      cardid   = :CARDID");
    714714    query.bindValue(":SOURCEID", source_id);
     715    query.bindValue(":CARDID",   card_id);
    715716
    716717    if (query.exec() && query.isActive() && query.size() > 0)
    717718    {