diff options
| -rw-r--r-- | src/plugins/General/rgscan/rgscandialog.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/General/rgscan/rgscanner.cpp | 14 | ||||
| -rw-r--r-- | src/plugins/General/rgscan/rgscanner.h | 5 |
3 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/General/rgscan/rgscandialog.cpp b/src/plugins/General/rgscan/rgscandialog.cpp index f7f867433..c935ad0b4 100644 --- a/src/plugins/General/rgscan/rgscandialog.cpp +++ b/src/plugins/General/rgscan/rgscandialog.cpp @@ -136,7 +136,7 @@ void RGScanDialog::onScanFinished(QString url) foreach (RGScanner *scanner, m_scanners) { - if(scanner->isRunning()) + if(scanner->isRunning() || scanner->isPending()) stopped = false; } diff --git a/src/plugins/General/rgscan/rgscanner.cpp b/src/plugins/General/rgscan/rgscanner.cpp index f40eeb599..a9c78adb8 100644 --- a/src/plugins/General/rgscan/rgscanner.cpp +++ b/src/plugins/General/rgscan/rgscanner.cpp @@ -30,6 +30,7 @@ RGScanner::RGScanner() m_peak = 0.; m_user_stop = false; m_is_running = false; + m_is_pending = false; m_has_values = false; m_handle = 0; m_decoder = 0; @@ -49,6 +50,7 @@ RGScanner::~RGScanner() bool RGScanner::prepare(const QString &url) { + m_is_pending = false; deinit(); m_url = url; QString name = m_url.section("/", -1); @@ -95,6 +97,7 @@ bool RGScanner::prepare(const QString &url) m_source = source; m_user_stop = false; m_has_values = false; + m_is_pending = true; return true; } @@ -105,11 +108,16 @@ void RGScanner::stop() m_mutex.unlock(); } -bool RGScanner::isRunning() +bool RGScanner::isRunning() const { return m_is_running; } +bool RGScanner::isPending() const +{ + return m_is_pending; +} + bool RGScanner::hasValues() const { return m_has_values; @@ -138,10 +146,14 @@ GainHandle_t *RGScanner::handle() void RGScanner::run() { if(m_user_stop) + { + m_is_pending = false; return; + } QString name = m_url.section("/", -1); qDebug("RGScanner: [%s] staring thread", qPrintable(name)); m_is_running = true; + m_is_pending = false; bool error = false; AudioParameters ap = m_decoder->audioParameters(); diff --git a/src/plugins/General/rgscan/rgscanner.h b/src/plugins/General/rgscan/rgscanner.h index f302ca08b..dad5b08a7 100644 --- a/src/plugins/General/rgscan/rgscanner.h +++ b/src/plugins/General/rgscan/rgscanner.h @@ -43,7 +43,8 @@ public: bool prepare(const QString &url); void stop(); - bool isRunning(); + bool isRunning() const; + bool isPending() const; bool hasValues() const; double gain() const; double peak() const; @@ -60,7 +61,7 @@ private: InputSource *m_source; Decoder *m_decoder; QMutex m_mutex; - bool m_user_stop, m_is_running, m_has_values; + bool m_user_stop, m_is_running, m_is_pending, m_has_values; QString m_url; double m_gain; double m_peak; |
