diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-25 12:25:02 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-10-25 12:25:02 +0000 |
| commit | e656da41cbb9ed65d5c72356d490d633306adc56 (patch) | |
| tree | fd36dd1566c4c4cefb06010d4a22f4a0af1aeab4 /src | |
| parent | c635029083e9b076fbfc20492f948678933eae13 (diff) | |
| download | qmmp-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
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmp/soundcore.cpp | 5 | ||||
| -rw-r--r-- | src/qmmp/statehandler.cpp | 28 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 7 |
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 |
