From 9418fd0fb8d1d726149650f35c28f9ac7d80f1bd Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 2 Nov 2011 22:48:23 -0400 Subject: [PATCH] Skip to next track if we have a QNR and it emits a failed signal --- src/libtomahawk/audio/audioengine.cpp | 13 +++++++++++++ src/libtomahawk/audio/audioengine.h | 2 ++ src/libtomahawk/utils/rdioparser.cpp | 1 + 3 files changed, 16 insertions(+) diff --git a/src/libtomahawk/audio/audioengine.cpp b/src/libtomahawk/audio/audioengine.cpp index 2831c74a1..c92be1f37 100644 --- a/src/libtomahawk/audio/audioengine.cpp +++ b/src/libtomahawk/audio/audioengine.cpp @@ -424,6 +424,9 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) tLog() << "Starting new song:" << m_currentTrack->url(); emit loading( m_currentTrack ); + if ( QNetworkReply* qnr_io = qobject_cast< QNetworkReply* >( io.data() ) ) + connect( qnr_io, SIGNAL( error( QNetworkReply::NetworkError ) ), this, SLOT( ioStreamError( QNetworkReply::NetworkError ) ) ); + if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) ) { if ( QNetworkReply* qnr_io = qobject_cast< QNetworkReply* >( io.data() ) ) @@ -573,6 +576,16 @@ AudioEngine::playItem( Tomahawk::PlaylistInterface* playlist, const Tomahawk::re } } +void +AudioEngine::ioStreamError( QNetworkReply::NetworkError error ) +{ + if ( error != QNetworkReply::NoError ) + { + if ( canGoNext() ) + loadNextTrack(); + } +} + void AudioEngine::playlistNextTrackReady() diff --git a/src/libtomahawk/audio/audioengine.h b/src/libtomahawk/audio/audioengine.h index 038579d9c..f888ce42c 100644 --- a/src/libtomahawk/audio/audioengine.h +++ b/src/libtomahawk/audio/audioengine.h @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -134,6 +135,7 @@ private slots: void setCurrentTrack( const Tomahawk::result_ptr& result ); + void ioStreamError( QNetworkReply::NetworkError ); private: void setState( AudioState state ); diff --git a/src/libtomahawk/utils/rdioparser.cpp b/src/libtomahawk/utils/rdioparser.cpp index 028197c65..c16db62bc 100644 --- a/src/libtomahawk/utils/rdioparser.cpp +++ b/src/libtomahawk/utils/rdioparser.cpp @@ -371,6 +371,7 @@ RdioParser::pixmap() const if ( !s_pixmap ) s_pixmap = new QPixmap( RESPATH "images/rdio.png" ); + return *s_pixmap; }