Ticket #876: mythtv_remoteblock2.patch

File mythtv_remoteblock2.patch, 4.4 KB (added by Mark Spieth, 18 years ago)
  • libs/libmythtv/remoteutil.cpp

     
    351351{
    352352    QStringList strlist = "QUERY_ISRECORDING";
    353353
    354     if (!gContext->SendReceiveStringList(strlist))
     354    if (!gContext->SendReceiveStringList(strlist, false, false))
    355355        return -1;
    356356
    357357    return strlist[0].toInt();
  • libs/libmyth/mythcontext.h

     
    359361    QPixmap *LoadScalePixmap(QString filename, bool fromcache = true);
    360362    QImage *LoadScaleImage(QString filename, bool fromcache = true);
    361363
    362     bool SendReceiveStringList(QStringList &strlist, bool quickTimeout = false);
     364    bool SendReceiveStringList(QStringList &strlist, bool quickTimeout = false,
     365                               bool block = true);
    363366
    364367    QImage *CacheRemotePixmap(const QString &url, bool reCache = false);
    365368
  • libs/libmyth/mythcontext.cpp

     
    204204    QString m_localhostname;
    205205
    206206    QMutex serverSockLock;
     207    bool attemptingToConnect;
    207208
    208209    MDBManager m_dbmanager;
    209210   
     
    263264      m_baseWidth(800), m_baseHeight(600),
    264265      m_localhostname(QString::null),
    265266      serverSockLock(false),
     267      attemptingToConnect(false),
    266268      language(""),
    267269      mainWindow(NULL),
    268270      m_wmult(1.0), m_hmult(1.0),
     
    860862            delete serverSock;
    861863            serverSock = NULL;
    862864       
     865            if (d->attemptingToConnect)
     866                break;
     867            d->attemptingToConnect = true;
     868
    863869            // only inform the user of a failure if WOL is disabled
    864870            if (sleepTime <= 0)
    865871            {
     
    870876                    "proper IP address.");
    871877                if (d->m_height && d->m_width)
    872878                {
     879                    bool manageLock = false;
     880                    if (!blockingClient && d->serverSockLock.locked())
     881                    {
     882                        manageLock = true;
     883                        d->serverSockLock.unlock();
     884                    }
    873885                    MythPopupBox::showOkPopup(d->mainWindow,
    874886                                              "connection failure",
    875887                                              tr("Could not connect to the "
     
    877889                                                 "it running?  Is the IP "
    878890                                                 "address set for it in the "
    879891                                                 "setup program correct?"));
     892                    if (manageLock)
     893                        d->serverSockLock.lock();
    880894                }
    881895
     896                d->attemptingToConnect = false;
    882897                return false;
    883898            }
    884899            else
     
    897912                sleep(sleepTime);
    898913                ++cnt;
    899914            }
     915            d->attemptingToConnect = false;
    900916        }
    901917        else
    902918            break;
     
    22732289    ClearSettingsCache(key, newValue);
    22742290}
    22752291
    2276 bool MythContext::SendReceiveStringList(QStringList &strlist, bool quickTimeout)
     2292bool MythContext::SendReceiveStringList(QStringList &strlist, bool quickTimeout, bool block)
    22772293{
    22782294    d->serverSockLock.lock();
    22792295   
    22802296    if (!d->serverSock)
     2297    {
    22812298        ConnectToMasterServer(false);
     2299        // should clear popup if it is currently active here. Not sure of the correct way. TBD
     2300    }
    22822301
    22832302    bool ok = false;
    22842303   
     
    23122331
    23132332        if (!ok)
    23142333        {
     2334            delete d->serverSock;
     2335            d->serverSock = NULL;
     2336
    23152337            qApp->lock();
     2338            if (!block)
     2339                d->serverSockLock.unlock();
    23162340            VERBOSE(VB_ALL, QString("Reconnection to backend server failed"));
    23172341            if (d->m_height && d->m_width)
    23182342                MythPopupBox::showOkPopup(d->mainWindow, "connection failure",
     
    23202344                                "server has gone away for some reason.. "
    23212345                                "Is it running?"));
    23222346
    2323             delete d->serverSock;
    2324             d->serverSock = NULL;
     2347            if (!block)
     2348                d->serverSockLock.lock();
    23252349            qApp->unlock();
    23262350        }
    23272351    }