Ticket #1211: def_input.diff

File def_input.diff, 3.9 KB (added by Mark.Buechler@…, 18 years ago)

New patch as requested. This one is implemented better.

  • libs/libmythtv/channelbase.h

     
    174174    virtual void SetCachedATSCInfo(const QString &chan);
    175175    static void GetCachedPids(int chanid, pid_cache_t&);
    176176    static void SaveCachedPids(int chanid, const pid_cache_t&);
    177     static void StoreInputChannels(const InputMap&);
     177    virtual void StoreInputChannels(const InputMap&);
    178178
    179179    TVRec   *pParent;
    180180    QString  channelorder;
  • libs/libmythtv/channelbase.cpp

     
    559559        if (!query.exec() || !query.isActive())
    560560            MythContext::DBError("StoreInputChannels", query);
    561561    }
     562
     563    // Save the current Input as the default for this card
     564    QString inputname = GetCurrentInput();
     565    int inputid = GetInputByName(inputname);
     566    int cardid = GetInputCardID(inputid);
     567
     568    if (cardid && !inputname.isNull())
     569    {
     570        query.prepare("UPDATE capturecard "
     571                      "SET defaultinput = :INNAME "
     572                      "WHERE cardid = :CARDID");
     573        query.bindValue(":INNAME", inputname);
     574        query.bindValue(":CARDID", cardid);
     575        if (!query.exec())
     576            MythContext::DBError("set_startinput", query);
     577    }
    562578}
    563579
    564580bool ChannelBase::CheckChannel(const QString &channum,
  • libs/libmythtv/tv_rec.cpp

     
    253253        return false;
    254254
    255255    // configure the Channel instance
    256     QString startchannel = GetStartChannel(cardid, genOpt.defaultinput);
     256    QString startchannel = GetStartChannel(cardid);
    257257    if (!CreateChannel(startchannel))
    258258        return false;
    259259
     
    14681468    return true;
    14691469}
    14701470
    1471 QString TVRec::GetStartChannel(int cardid, const QString &defaultinput)
     1471QString TVRec::GetStartChannel(int cardid, const QString &input)
    14721472{
     1473    QString defaultinput;
    14731474    QString msg("");
    14741475    QString startchan = QString::null;
    14751476
     1477    if (input.isNull())
     1478    {
     1479        // Get the last viewed input
     1480        MSqlQuery query(MSqlQuery::InitCon());
     1481        query.prepare(
     1482            "SELECT defaultinput "
     1483            "FROM capturecard "
     1484            "WHERE cardid = :CARDID");
     1485        query.bindValue(":CARDID", cardid);
     1486
     1487        if (!query.exec() || !query.isActive())
     1488            MythContext::DBError("getdefaultinput", query);
     1489        else if (query.next())
     1490            defaultinput = query.value(0).toString();
     1491    }
     1492    else
     1493        defaultinput = input;
     1494
    14761495    // Get last tuned channel from database, to use as starting channel
    14771496    MSqlQuery query(MSqlQuery::InitCon());
    14781497    query.prepare(
     
    30233042
    30243043    // If this is Live TV startup, we need a channel...
    30253044    if (channum.isEmpty() && (request.flags & kFlagLiveTV))
    3026     {
    3027         input   = genOpt.defaultinput;
    3028         channum = GetStartChannel(cardid, input);
    3029     }
     3045        channum = GetStartChannel(cardid);
    30303046
    30313047    if (channel && !channum.isEmpty() && (channum.find("NextChannel") >= 0))
    30323048    {
  • libs/libmythtv/tv_rec.h

     
    269269                           DBox2DBOptions     &dbox2_opts);
    270270
    271271
    272     static QString GetStartChannel(int cardid, const QString &defaultinput);
     272    static QString GetStartChannel(int cardid,
     273                                   const QString &input = QString::null);
    273274
    274275    bool SetupRecorder(RecordingProfile& profile);
    275276    void TeardownRecorder(bool killFile = false);