Ticket #10541: 10541-v1.2.patch

File 10541-v1.2.patch, 1.9 KB (added by danielk, 12 years ago)
  • mythtv/libs/libmythtv/eitscanner.cpp

    diff --git a/mythtv/libs/libmythtv/eitscanner.cpp b/mythtv/libs/libmythtv/eitscanner.cpp
    index 6135e08..660cdc4 100644
    a b void EITScanner::run(void) 
    147147            // 24 hours ago
    148148            eitHelper->PruneEITCache(activeScanNextTrig.toTime_t() - 86400);
    149149        }
     150        if (!activeScan)
     151            activeScanStopped = true;
    150152
    151153        lock.lock();
    152154        if (!exitThread)
    153155            exitThreadCond.wait(&lock, 400); // sleep up to 400 ms.
     156
     157        if (!activeScan)
     158            activeScanStopped = true;
    154159    }
    155160    lock.unlock();
     161    activeScanStopped = true;
    156162}
    157163
    158164/** \fn EITScanner::RescheduleRecordings(void)
    void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source) 
    271277        // Add a little randomness to trigger time so multiple
    272278        // cards will have a staggered channel changing time.
    273279        activeScanTrigTime += random() % 29;
     280        activeScanStopped = false;
    274281        activeScan = true;
    275282    }
    276283}
    277284
    278 void EITScanner::StopActiveScan()
     285void EITScanner::StopActiveScan(void)
    279286{
     287    activeScanStopped = false;
    280288    activeScan = false;
    281     rec = NULL;
     289
     290    lock.lock();
     291    exitThreadCond.wakeAll();
     292    lock.unlock();
     293
    282294    StopPassiveScan();
     295    while (!activeScanStopped)
     296        usleep(10000);
     297
     298    rec = NULL;
    283299}
  • mythtv/libs/libmythtv/eitscanner.h

    diff --git a/mythtv/libs/libmythtv/eitscanner.h b/mythtv/libs/libmythtv/eitscanner.h
    index 36dd4d9..af4f1e5 100644
    a b class EITScanner : public QRunnable 
    5858    QWaitCondition   exitThreadCond;
    5959
    6060    TVRec           *rec;
    61     bool             activeScan;
     61    volatile bool    activeScan;
     62    volatile bool    activeScanStopped;
    6263    QDateTime        activeScanNextTrig;
    6364    uint             activeScanTrigTime;
    6465    QStringList      activeScanChannels;