diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-10-16 07:21:24 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-10-16 07:21:24 +0000 |
| commit | 3e8f5a28da668b89a3f782ec26e31e10ff8aa726 (patch) | |
| tree | 5c62f16a99e66e86b528b3430529bec7c57ce11e | |
| parent | 56109084773030eb47d6ca317be1a944324c3f4b (diff) | |
| download | qmmp-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.cpp | 14 |
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 |
