diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index 52752d87f..6ab220db9 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -212,6 +212,7 @@ AudioControls::onControlStateChanged() void AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) { + tDebug() << "FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"; if ( result.isNull() ) return; diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index c39ad6311..84ae947fd 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -451,6 +451,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) if ( !err ) { tLog() << "Starting new song:" << m_currentTrack->url(); + m_state = Loading; emit loading( m_currentTrack ); if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) ) @@ -736,8 +737,17 @@ AudioEngine::onAboutToFinish() void AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) { - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << oldState << newState << m_expectStop; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << oldState << newState << m_expectStop << state(); + if ( newState == Phonon::LoadingState ) + { + // We don't emit this state to listeners - yet. + m_state = Loading; + } + if ( newState == Phonon::StoppedState ) + { + m_state = Stopped; + } if ( newState == Phonon::ErrorState ) { stop( UnknownError ); @@ -749,7 +759,9 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) } if ( newState == Phonon::PlayingState ) { - emit started( m_currentTrack ); + if ( state() != Paused && state() != Playing ) + emit started( m_currentTrack ); + setState( Playing ); } @@ -982,17 +994,12 @@ AudioEngine::checkStateQueue() { case Playing: { - bool paused = isPaused(); m_mediaObject->play(); - if ( paused ) - setVolume( m_volume ); - break; } case Paused: { - m_volume = volume(); m_mediaObject->pause(); break; } diff --git a/src/libtomahawk/audio/AudioEngine.h b/src/libtomahawk/audio/AudioEngine.h index c169fcff3..2727608dc 100644 --- a/src/libtomahawk/audio/AudioEngine.h +++ b/src/libtomahawk/audio/AudioEngine.h @@ -42,7 +42,7 @@ Q_OBJECT public: enum AudioErrorCode { StreamReadError, AudioDeviceError, DecodeError, UnknownError, NoError }; - enum AudioState { Stopped, Playing, Paused, Error }; + enum AudioState { Stopped, Playing, Paused, Error, Loading }; static AudioEngine* instance(); @@ -171,7 +171,6 @@ private: bool m_waitingOnNewTrack; mutable QStringList m_supportedMimeTypes; - unsigned int m_volume; AudioState m_state; QQueue< AudioState > m_stateQueue;