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:
@@ -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 );
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user