diff --git a/mythtv/libs/libmythtv/iptvstreamhandler.cpp b/mythtv/libs/libmythtv/iptvstreamhandler.cpp index 3c61babf1a1..fe6c07fcc64 100644 --- a/mythtv/libs/libmythtv/iptvstreamhandler.cpp +++ b/mythtv/libs/libmythtv/iptvstreamhandler.cpp @@ -113,13 +113,6 @@ IPTVStreamHandler::IPTVStreamHandler(const IPTVTuningData &tuning) : m_use_rtp_streaming = m_tuning.GetDataURL().scheme().toUpper() == "RTP"; } -void IPTVStreamHandler::SetRunningDesired(bool desired) -{ - StreamHandler::SetRunningDesired(desired); - if (!desired) - exit(0); -} - void IPTVStreamHandler::run(void) { RunProlog(); diff --git a/mythtv/libs/libmythtv/iptvstreamhandler.h b/mythtv/libs/libmythtv/iptvstreamhandler.h index 621394218a7..d6319ae2343 100644 --- a/mythtv/libs/libmythtv/iptvstreamhandler.h +++ b/mythtv/libs/libmythtv/iptvstreamhandler.h @@ -88,8 +88,6 @@ class IPTVStreamHandler : public StreamHandler virtual void run(void); // MThread - virtual void SetRunningDesired(bool desired); // StreamHandler - private: IPTVTuningData m_tuning; QUdpSocket *m_sockets[IPTV_SOCKET_COUNT]; diff --git a/mythtv/libs/libmythtv/streamhandler.cpp b/mythtv/libs/libmythtv/streamhandler.cpp index 2b0a7b6b68d..2c78fcb86bc 100644 --- a/mythtv/libs/libmythtv/streamhandler.cpp +++ b/mythtv/libs/libmythtv/streamhandler.cpp @@ -175,17 +175,11 @@ void StreamHandler::Stop(void) { QMutexLocker locker(&_start_stop_lock); - do + while (_running) { SetRunningDesired(false); - while (!_running_desired && _running) - _running_state_changed.wait(&_start_stop_lock, 100); - if (_running_desired) - { - LOG(VB_GENERAL, LOG_WARNING, LOC + - "Programmer Error: Start called before Stop finished"); - } - } while (_running_desired); + _running_state_changed.wait(&_start_stop_lock, 100); + } wait(); } @@ -207,6 +201,13 @@ void StreamHandler::SetRunning(bool is_running, _running_state_changed.wakeAll(); } +void StreamHandler::SetRunningDesired(bool desired) +{ + _running_desired = desired; + if (!desired) + MThread::exit(0); +} + bool StreamHandler::AddPIDFilter(PIDInfo *info) { #ifdef DEBUG_PID_FILTERS diff --git a/mythtv/libs/libmythtv/streamhandler.h b/mythtv/libs/libmythtv/streamhandler.h index 1db0584e1f1..3bd0ae56cfe 100644 --- a/mythtv/libs/libmythtv/streamhandler.h +++ b/mythtv/libs/libmythtv/streamhandler.h @@ -94,7 +94,7 @@ class StreamHandler : protected MThread, public DeviceReaderCB /// At minimum this sets _running_desired, this may also send /// signals to anything that might be blocking the run() loop. /// \note: The _start_stop_lock must be held when this is called. - virtual void SetRunningDesired(bool desired) { _running_desired = desired; } + void SetRunningDesired(bool desired); protected: QString _device;