Ticket #2930: tuner_busy.3.diff

File tuner_busy.3.diff, 4.1 KB (added by skamithi, 13 years ago)
  • remoteutil.h

     
    6363MPUBLIC int RemoteCheckForRecording(ProgramInfo *pginfo);
    6464MPUBLIC int RemoteGetRecordingStatus(ProgramInfo *pginfo, int overrecsecs,
    6565                                     int underrecsecs);
    66 
     66MPUBLIC vector<ProgramInfo *> *RemoteGetCurrentlyRecordingList(void);
    6767#endif
    6868
    6969/* vim: set expandtab tabstop=4 shiftwidth=4: */
  • remoteutil.cpp

     
    426426    return retval;
    427427}
    428428
     429/*
     430 * \brief return list of currently recording shows
     431 */
     432vector<ProgramInfo *> *RemoteGetCurrentlyRecordingList(void)
     433{
     434    QString str = "QUERY_RECORDINGS ";
     435    str += "Recording";
     436    QStringList strlist = str;
     437
     438    vector<ProgramInfo *> *reclist = new vector<ProgramInfo *>;
     439    vector<ProgramInfo *> *info = new vector<ProgramInfo *>;
     440    if (!RemoteGetRecordingList(info, strlist))
     441    {
     442        if (info)
     443            delete info;
     444        return reclist;
     445    }
     446
     447    ProgramInfo *p = NULL;
     448    vector<ProgramInfo *>::iterator it = info->begin();
     449    // make sure whatever remotegetrecordinglist returned
     450    // only has rsRecording shows
     451    for ( ; it != info->end(); it++)
     452    {
     453        p = *it;
     454        if (p->recstatus == rsRecording)
     455            reclist->push_back(new ProgramInfo(*p));
     456    }
     457   
     458    if (info)
     459        delete info;
     460
     461    return reclist;
     462}
    429463/* vim: set expandtab tabstop=4 shiftwidth=4: */
  • tv_play.cpp

     
    103103
    104104    while (!quitAll)
    105105    {
     106        int freeRecorders = RemoteGetFreeRecorderCount();
    106107        if (curProgram)
    107108        {
    108109            if (!tv->Playback(curProgram))
    109110                quitAll = true;
    110111        }
     112        else if (!freeRecorders)
     113        {
     114            vector<ProgramInfo *> *reclist;
     115            reclist = RemoteGetCurrentlyRecordingList();
     116            if (reclist->empty())
     117            {
     118                VERBOSE(VB_PLAYBACK, LOC_ERR +
     119                        "Failed to get recording show list");
     120                quitAll = true;
     121                if (reclist)
     122                    delete reclist;
     123                continue;
     124            }
     125
     126            int numrecordings = reclist->size();
     127            if (numrecordings > 0)
     128            {
     129                if (numrecordings == 1)
     130                {
     131                    curProgram = new ProgramInfo(*reclist->at(0));
     132                }
     133                else
     134                {
     135                    ProgramInfo *p = NULL;
     136                    QStringList recTitles;
     137                    QString buttonTitle;
     138                    vector<ProgramInfo *>::iterator it = reclist->begin();
     139                    while (it != reclist->end())
     140                    {
     141                        p = *it;
     142                        buttonTitle = tr("Chan %1: %2")
     143                            .arg(p->chanstr).arg(p->title);
     144                        recTitles.append(buttonTitle);
     145                        it++;
     146                    }
     147                    int ret = MythPopupBox::showButtonPopup(
     148                                    gContext->GetMainWindow(),
     149                                    "",
     150                                    tr("All Tuners are Busy.\n"
     151                                       "Select a Current Recording"),
     152                                    recTitles, 1);
     153                    if (ret == -1)
     154                    {
     155                        quitAll = true;
     156                    }
     157                    else
     158                    {
     159                        p = reclist->at(ret);
     160                        curProgram = new ProgramInfo(*p);
     161                    }
     162                }
     163            }
     164
     165            if (reclist)
     166                delete reclist;
     167        }
    111168        else
    112169        {
    113170            if (!tv->LiveTV(showDialogs, startInGuide))