diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-10-16 08:06:09 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-10-16 08:06:09 +0000 |
| commit | 0b4c28342e621ab7c45b1a21ebe8d958a76dc634 (patch) | |
| tree | 09257c1905a18eb77d3f2e8fc6c300624f078b6a /src/plugins/General/rgscan/rgscanner.cpp | |
| parent | eb74cc322125087c3cee58282be0ac38dd7ec052 (diff) | |
| download | qmmp-0b4c28342e621ab7c45b1a21ebe8d958a76dc634.tar.gz qmmp-0b4c28342e621ab7c45b1a21ebe8d958a76dc634.tar.bz2 qmmp-0b4c28342e621ab7c45b1a21ebe8d958a76dc634.zip | |
rgscan: fixed race condition
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3795 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/rgscan/rgscanner.cpp')
| -rw-r--r-- | src/plugins/General/rgscan/rgscanner.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
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(); |
