Ticket #1847: inputs.diff

File inputs.diff, 2.4 KB (added by Mark.Buechler@…, 14 years ago)

Patch to fix

  • libs/libmythtv/dvbchannel.h

     
    109109    int               cardnum;     ///< DVB Card number
    110110    bool              has_crc_bug; ///< true iff our driver munges PMT
    111111    int               nextInputID; ///< Signal an input change
     112    QString           nextInputName; ///< Contains name of the new input or null
    112113};
    113114
    114115#endif
  • libs/libmythtv/dvbchannel.cpp

     
    8989    bzero(&info, sizeof(info));
    9090    has_crc_bug = CardUtil::HasDVBCRCBug(aCardNum);
    9191    sigmon_delay = CardUtil::GetMinSignalMonitoringDelay(aCardNum);
     92
     93    nextInputName = QString::null;
    9294}
    9395
    9496DVBChannel::~DVBChannel()
     
    245247
    246248bool DVBChannel::SetChannelByString(const QString &chan)
    247249{
     250VERBOSE(VB_GENERAL, QString("------------> SetCHannelByString(): %1").arg(chan));
    248251    QString func = QString("SetChannelByString(%1)").arg(chan);
    249252    VERBOSE(VB_CHANNEL, LOC + func);
    250253    if (fd_frontend < 0)
     
    260263        return true;
    261264    }
    262265
     266    if (nextInputName.isNull())
     267    {
     268        QString inputName;
     269        if (!CheckChannel(chan, inputName))
     270        {
     271            VERBOSE(VB_IMPORTANT, LOC + "CheckChannel failed. " +
     272                    QString("Please verify channel '%1'").arg(chan) +
     273                    " in the \"mythtv-setup\" Channel Editor.");
     274            return false;
     275        }
     276
     277        // If CheckChannel filled in the inputName then we need to
     278        // change inputs and return, since the act of changing
     279        // inputs will change the channel as well.
     280        if (!inputName.isEmpty())
     281        {
     282            nextInputName = inputName;
     283            return ChannelBase::SwitchToInput(inputName, chan);
     284        }
     285    }
     286
    263287    if (GetChannelOptions(chan) == false)
    264288    {
    265289        VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to get channel options for " +
     
    285309            QString("channel '%1'.").arg(chan));
    286310
    287311    currentInputID = nextInputID;
     312    nextInputName = QString::null;
    288313    inputs[currentInputID]->startChanNum = curchannelname;
    289314
    290315    return true;