aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-10-16 07:21:24 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-10-16 07:21:24 +0000
commit3e8f5a28da668b89a3f782ec26e31e10ff8aa726 (patch)
tree5c62f16a99e66e86b528b3430529bec7c57ce11e
parent56109084773030eb47d6ca317be1a944324c3f4b (diff)
downloadqmmp-3e8f5a28da668b89a3f782ec26e31e10ff8aa726.tar.gz
qmmp-3e8f5a28da668b89a3f782ec26e31e10ff8aa726.tar.bz2
qmmp-3e8f5a28da668b89a3f782ec26e31e10ff8aa726.zip
fixed crash inside sound core
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1938 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/soundcore.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp
index 4f551a04f..b0dd90cdd 100644
--- a/src/qmmp/soundcore.cpp
+++ b/src/qmmp/soundcore.cpp
@@ -78,6 +78,14 @@ bool SoundCore::play(const QString &source, bool queue, qint64 offset)
stop();
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
}
+ else
+ {
+ qDeleteAll(m_pendingSources);
+ m_pendingSources.clear();
+ if(m_pendingEngine)
+ delete m_pendingEngine;
+ m_pendingEngine = 0;
+ }
MetaDataManager::instance(); //create metadata manager
InputSource *s = InputSource::create(source, this);
@@ -100,13 +108,13 @@ bool SoundCore::play(const QString &source, bool queue, qint64 offset)
void SoundCore::stop()
{
m_url.clear();
+ if(m_pendingEngine)
+ delete m_pendingEngine;
+ m_pendingEngine = 0;
if(m_engine)
m_engine->stop();
qDeleteAll(m_pendingSources);
m_pendingSources.clear();
- if(m_pendingEngine)
- delete m_pendingEngine;
- m_pendingEngine = 0;
updateVolume();
if(state() == Qmmp::NormalError || state() == Qmmp::FatalError || state() == Qmmp::Buffering)
StateHandler::instance()->dispatch(Qmmp::Stopped); //clear error and buffering state