Ticket #8630: QTimer.patch

File QTimer.patch, 2.2 KB (added by Vitold <vitold.md@…>, 10 years ago)
  • libs/libmythtv/NuppelVideoPlayer.cpp

     
    9090#define LOC_ERR  QString("NVP(%1), Error: ").arg(dbg_ident(this),0,36)
    9191#define LOC_DEC  QString("NVP(%1): ").arg(dbg_ident(m_nvp),0,36)
    9292
    93 PlayerTimer::PlayerTimer(NuppelVideoPlayer *nvp)
     93PlayerTimer::PlayerTimer(NuppelVideoPlayer *nvp) : m_terminate(false)
    9494{
    9595    m_nvp = nvp;
    96     m_timer = new QTimer(this);
    97     if (m_nvp && m_timer)
    98     {
    99         connect(m_timer, SIGNAL(timeout()), this, SLOT(loop()));
    100         m_timer->start();
    101     }
    102     else
    103         VERBOSE(VB_IMPORTANT, QString("Failed to start PlayerTimer."));
    10496}
    10597
    10698PlayerTimer::~PlayerTimer(void)
    10799{
    108     if (m_timer)
    109     {
    110         m_timer->stop();
    111         m_timer->deleteLater();
    112     }
     100                m_terminate = true;
     101                while (!wait()) { }
    113102}
    114103
    115 void PlayerTimer::loop(void)
     104void PlayerTimer::run(void)
    116105{
    117     if (m_nvp)
    118     {
    119         if (!m_nvp->IsErrored())
    120         {
    121             m_nvp->EventLoop();
    122             m_nvp->VideoLoop();
    123         }
    124     }
     106        while(!m_terminate)
     107        {
     108                if (m_nvp)
     109                {
     110                        if (!m_nvp->IsErrored())
     111                        {
     112                                m_nvp->EventLoop();
     113                                m_nvp->VideoLoop();
     114                        }
     115                }
     116        }
    125117}
    126118
    127119void DecoderThread::run(void)
     
    23332325    if (playerTimer)
    23342326        delete playerTimer;
    23352327    playerTimer = new PlayerTimer(this);
    2336     playerTimer->startTimer(0);
     2328    playerTimer->start();
    23372329    playerThread->setPriority(QThread::TimeCriticalPriority);
    23382330    return !IsErrored();
    23392331}
  • libs/libmythtv/NuppelVideoPlayer.h

     
    8181    kDisplayTeletextMenu        = 0x80,
    8282};
    8383
    84 class PlayerTimer : public QObject
     84class PlayerTimer : public QThread
    8585{
    8686    Q_OBJECT
    8787  public:
     
    8989   ~PlayerTimer(void);
    9090
    9191  public slots:
    92     void loop(void);
     92    void run(void);
    9393
    9494  private:
    9595    NuppelVideoPlayer *m_nvp;
    9696    QTimer            *m_timer;
     97        bool                       m_terminate;
    9798};
    9899
    99100class DecoderThread : public QThread