aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-25 12:25:02 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-25 12:25:02 +0000
commite656da41cbb9ed65d5c72356d490d633306adc56 (patch)
treefd36dd1566c4c4cefb06010d4a22f4a0af1aeab4
parentc635029083e9b076fbfc20492f948678933eae13 (diff)
downloadqmmp-e656da41cbb9ed65d5c72356d490d633306adc56.tar.gz
qmmp-e656da41cbb9ed65d5c72356d490d633306adc56.tar.bz2
qmmp-e656da41cbb9ed65d5c72356d490d633306adc56.zip
fixed some event-handling bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@596 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/soundcore.cpp5
-rw-r--r--src/qmmp/statehandler.cpp28
-rw-r--r--src/ui/mainwindow.cpp7
3 files changed, 20 insertions, 20 deletions
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp
index df3a94167..bc254f8c3 100644
--- a/src/qmmp/soundcore.cpp
+++ b/src/qmmp/soundcore.cpp
@@ -76,6 +76,7 @@ SoundCore::~SoundCore()
bool SoundCore::play(const QString &source)
{
stop();
+ qDebug("SoundCore: url=%s", qPrintable(source));
m_source = source;
if (m_handler->state() != Qmmp::Stopped) //clear error state
m_handler->dispatch(Qmmp::Stopped);
@@ -171,13 +172,12 @@ void SoundCore::stop()
if (m_output)
{
- //m_output->deleteLater();
delete m_output;
m_output = 0;
}
if (m_decoder)
{
- m_decoder->deleteLater();
+ delete m_decoder;
m_decoder = 0;
}
if (m_input)
@@ -185,7 +185,6 @@ void SoundCore::stop()
m_input->deleteLater();
m_input = 0;
}
- qApp->processEvents();
//update VolumeControl
delete m_volumeControl;
m_volumeControl = VolumeControl::create(this);
diff --git a/src/qmmp/statehandler.cpp b/src/qmmp/statehandler.cpp
index 20489f941..1bc2e1587 100644
--- a/src/qmmp/statehandler.cpp
+++ b/src/qmmp/statehandler.cpp
@@ -99,6 +99,7 @@ void StateHandler::dispatch(const QMap<Qmmp::MetaData, QString> &metaData)
emit metaDataChanged ();
else
m_sendMeta = TRUE;
+
}
m_mutex.unlock();
}
@@ -106,6 +107,19 @@ void StateHandler::dispatch(const QMap<Qmmp::MetaData, QString> &metaData)
void StateHandler::dispatch(const Qmmp::State &state)
{
m_mutex.lock();
+ //clear
+ QList <Qmmp::State> clearStates;
+ clearStates << Qmmp::Stopped << Qmmp::NormalError << Qmmp::FatalError;
+ if (clearStates.contains(state))
+ {
+ m_elapsed = -1;
+ m_bitrate = 0;
+ m_frequency = 0;
+ m_precision = 0;
+ m_channels = 0;
+ m_sendMeta = FALSE;
+ m_metaData.clear();
+ }
if (m_state != state)
{
QStringList states;
@@ -114,20 +128,6 @@ void StateHandler::dispatch(const Qmmp::State &state)
qPrintable(states.at(state)), qPrintable(states.at(m_state)));
m_state = state;
-
- //clear
- QList <Qmmp::State> clearStates;
- clearStates << Qmmp::Stopped << Qmmp::NormalError << Qmmp::FatalError;
- if (clearStates.contains(m_state))
- {
- m_elapsed = -1;
- m_bitrate = 0;
- m_frequency = 0;
- m_precision = 0;
- m_channels = 0;
- m_sendMeta = FALSE;
- m_metaData.clear();
- }
emit stateChanged(state);
if (m_state == Qmmp::Playing && m_sendMeta)
{
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
index eb4d2c118..f12dbd216 100644
--- a/src/ui/mainwindow.cpp
+++ b/src/ui/mainwindow.cpp
@@ -218,6 +218,7 @@ void MainWindow::play()
}
}
}
+ qApp->processEvents();
}
void MainWindow::replay()
@@ -259,6 +260,7 @@ void MainWindow::stop()
//display->setTime(0);
m_core->stop();
}
+
void MainWindow::next()
{
if (!m_playListModel->isEmptyQueue())
@@ -267,20 +269,19 @@ void MainWindow::next()
}
else if (!m_playListModel->next())
{
- stop();
display->hideTimeDisplay();
return;
}
m_playlist->update();
if (m_core->state() != Qmmp::Stopped)
{
- stop();
m_elapsed = 0;
play();
}
else
display->hideTimeDisplay();
}
+
void MainWindow::previous()
{
if (!m_playListModel->previous())
@@ -292,7 +293,7 @@ void MainWindow::previous()
m_playlist->update();
if (m_core->state() != Qmmp::Stopped)
{
- stop();
+ m_elapsed = 0;
play();
}
else