1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-23 01:09:42 +01:00

TWK-883: Prevent failed tracks from being displayed as recently played in the dashboard

This commit is contained in:
Ahmed 2012-05-18 22:23:49 +02:00 committed by Leo Franchi
parent 4b28c15850
commit 337423c52f
2 changed files with 23 additions and 10 deletions

View File

@ -158,14 +158,18 @@ AudioEngine::pause()
void
AudioEngine::stop()
AudioEngine::stop(AudioErrorCode errorCode)
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
if ( isStopped() )
return;
setState( Stopped );
if(errorCode == NoError)
setState( Stopped );
else
setState( Error );
m_mediaObject->stop();
emit stopped();
@ -467,6 +471,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result )
}
m_input = io;
m_mediaObject->play();
emit started( m_currentTrack );
if ( TomahawkSettings::instance()->privateListeningMode() != TomahawkSettings::FullyPrivate )
@ -661,14 +666,19 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState )
if ( newState == Phonon::ErrorState )
{
stop();
stop( UnknownError );
tLog() << "Phonon Error:" << m_mediaObject->errorString() << m_mediaObject->errorType();
emit error( UnknownError );
setState(Error);
return;
}
if ( newState == Phonon::PlayingState )
{
setState( Playing );
}
if ( oldState == Phonon::PlayingState )
{
@ -782,10 +792,13 @@ AudioEngine::setCurrentTrack( const Tomahawk::result_ptr& result )
Tomahawk::result_ptr lastTrack = m_currentTrack;
if ( !lastTrack.isNull() )
{
if ( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening )
{
DatabaseCommand_LogPlayback* cmd = new DatabaseCommand_LogPlayback( lastTrack, DatabaseCommand_LogPlayback::Finished, m_timeElapsed );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
if(m_state != Error)
{
if ( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening )
{
DatabaseCommand_LogPlayback* cmd = new DatabaseCommand_LogPlayback( lastTrack, DatabaseCommand_LogPlayback::Finished, m_timeElapsed );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
}
}
emit finished( lastTrack );

View File

@ -43,8 +43,8 @@ class DLLEXPORT AudioEngine : public QObject
Q_OBJECT
public:
enum AudioErrorCode { StreamReadError, AudioDeviceError, DecodeError, UnknownError };
enum AudioState { Stopped, Playing, Paused };
enum AudioErrorCode { StreamReadError, AudioDeviceError, DecodeError, UnknownError, NoError };
enum AudioState { Stopped, Playing, Paused, Error };
static AudioEngine* instance();
@ -76,7 +76,7 @@ public slots:
void playPause();
void play();
void pause();
void stop();
void stop(AudioErrorCode errorCode = NoError);
void previous();
void next();