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
AudioEngine::stop()
AudioEngine::stop(AudioErrorCode errorCode)
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
if ( isStopped() )
return;
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 )
{
@@ -781,12 +791,15 @@ AudioEngine::setCurrentTrack( const Tomahawk::result_ptr& result )
{
Tomahawk::result_ptr lastTrack = m_currentTrack;
if ( !lastTrack.isNull() )
{
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();