diff --git a/src/libtomahawk/audio/audioengine.cpp b/src/libtomahawk/audio/audioengine.cpp index a52383f6c..a29ad2590 100644 --- a/src/libtomahawk/audio/audioengine.cpp +++ b/src/libtomahawk/audio/audioengine.cpp @@ -93,6 +93,21 @@ AudioEngine::~AudioEngine() } +QStringList +AudioEngine::supportedMimeTypes() const +{ + if ( m_supportedMimeTypes.isEmpty() ) + { + m_supportedMimeTypes = Phonon::BackendCapabilities::availableMimeTypes(); + m_supportedMimeTypes << "audio/basic"; + + return m_supportedMimeTypes; + } + else + return m_supportedMimeTypes; +} + + void AudioEngine::playPause() { diff --git a/src/libtomahawk/audio/audioengine.h b/src/libtomahawk/audio/audioengine.h index 9f21e5c91..be6a7ac44 100644 --- a/src/libtomahawk/audio/audioengine.h +++ b/src/libtomahawk/audio/audioengine.h @@ -24,6 +24,7 @@ #include #include +#include #include "infosystem/infosystem.h" @@ -52,6 +53,7 @@ public: explicit AudioEngine(); ~AudioEngine(); + QStringList supportedMimeTypes() const; unsigned int volume() const { return m_audioOutput->volume() * 100.0; } // in percent AudioState state() const { return m_state; } @@ -148,6 +150,7 @@ private: bool m_waitingOnNewTrack; bool m_infoSystemConnected; + mutable QStringList m_supportedMimeTypes; AudioState m_state; static AudioEngine* s_instance; diff --git a/src/libtomahawk/query.cpp b/src/libtomahawk/query.cpp index 30aa0c421..d839de92c 100644 --- a/src/libtomahawk/query.cpp +++ b/src/libtomahawk/query.cpp @@ -28,6 +28,7 @@ #include "pipeline.h" #include "resolver.h" #include "sourcelist.h" +#include "audio/audioengine.h" #include "utils/logger.h" @@ -104,7 +105,17 @@ Query::addResults( const QList< Tomahawk::result_ptr >& newresults ) { { QMutexLocker lock( &m_mutex ); - m_results.append( newresults ); + + const QStringList smt = AudioEngine::instance()->supportedMimeTypes(); + foreach ( const Tomahawk::result_ptr& result, newresults ) + { + if ( !smt.contains( result->mimetype() ) ) + { + tDebug() << "Won't accept result, unsupported mimetype" << result->toString() << result->mimetype(); + } + else + m_results.append( result ); + } qStableSort( m_results.begin(), m_results.end(), Query::resultSorter ); // hook up signals, and check solved status