1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 14:16:32 +02: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 void
AudioEngine::stop() AudioEngine::stop(AudioErrorCode errorCode)
{ {
tDebug( LOGEXTRA ) << Q_FUNC_INFO; tDebug( LOGEXTRA ) << Q_FUNC_INFO;
if ( isStopped() ) if ( isStopped() )
return; return;
setState( Stopped ); if(errorCode == NoError)
setState( Stopped );
else
setState( Error );
m_mediaObject->stop(); m_mediaObject->stop();
emit stopped(); emit stopped();
@@ -467,6 +471,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result )
} }
m_input = io; m_input = io;
m_mediaObject->play(); m_mediaObject->play();
emit started( m_currentTrack ); emit started( m_currentTrack );
if ( TomahawkSettings::instance()->privateListeningMode() != TomahawkSettings::FullyPrivate ) if ( TomahawkSettings::instance()->privateListeningMode() != TomahawkSettings::FullyPrivate )
@@ -661,14 +666,19 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState )
if ( newState == Phonon::ErrorState ) if ( newState == Phonon::ErrorState )
{ {
stop(); stop( UnknownError );
tLog() << "Phonon Error:" << m_mediaObject->errorString() << m_mediaObject->errorType(); tLog() << "Phonon Error:" << m_mediaObject->errorString() << m_mediaObject->errorType();
emit error( UnknownError ); emit error( UnknownError );
setState(Error);
return; return;
} }
if ( newState == Phonon::PlayingState ) if ( newState == Phonon::PlayingState )
{
setState( Playing ); setState( Playing );
}
if ( oldState == Phonon::PlayingState ) if ( oldState == Phonon::PlayingState )
{ {
@@ -782,10 +792,13 @@ AudioEngine::setCurrentTrack( const Tomahawk::result_ptr& result )
Tomahawk::result_ptr lastTrack = m_currentTrack; Tomahawk::result_ptr lastTrack = m_currentTrack;
if ( !lastTrack.isNull() ) if ( !lastTrack.isNull() )
{ {
if ( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening ) if(m_state != Error)
{ {
DatabaseCommand_LogPlayback* cmd = new DatabaseCommand_LogPlayback( lastTrack, DatabaseCommand_LogPlayback::Finished, m_timeElapsed ); if ( TomahawkSettings::instance()->privateListeningMode() == TomahawkSettings::PublicListening )
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) ); {
DatabaseCommand_LogPlayback* cmd = new DatabaseCommand_LogPlayback( lastTrack, DatabaseCommand_LogPlayback::Finished, m_timeElapsed );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
}
} }
emit finished( lastTrack ); emit finished( lastTrack );

View File

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