aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/rgscan/rgscanner.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-10-16 08:06:09 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-10-16 08:06:09 +0000
commit0b4c28342e621ab7c45b1a21ebe8d958a76dc634 (patch)
tree09257c1905a18eb77d3f2e8fc6c300624f078b6a /src/plugins/General/rgscan/rgscanner.cpp
parenteb74cc322125087c3cee58282be0ac38dd7ec052 (diff)
downloadqmmp-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.cpp14
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();