From 8ca2c2459786c596201fb0dddb0ea9e17b884092 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Sat, 8 Mar 2014 01:44:01 +0000 Subject: [PATCH] Whitelist rtmp:// to passed as plain URL to Phonon --- src/libtomahawk/audio/AudioEngine.cpp | 8 +++++--- src/libtomahawk/utils/TomahawkUtils.cpp | 7 +++++++ src/libtomahawk/utils/TomahawkUtils.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 33fe0dbfe..1042a0339 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -627,7 +627,8 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) setCurrentTrack( result ); - if ( !TomahawkUtils::isLocalResult( d->currentTrack->url() ) && !TomahawkUtils::isHttpResult( d->currentTrack->url() ) ) + if ( !TomahawkUtils::isLocalResult( d->currentTrack->url() ) && !TomahawkUtils::isHttpResult( d->currentTrack->url() ) + && !TomahawkUtils::isRtmpResult( d->currentTrack->url() ) ) { boost::function< void ( QSharedPointer< QIODevice >& ) > callback = boost::bind( &AudioEngine::performLoadTrack, this, result, _1 ); @@ -655,7 +656,7 @@ AudioEngine::performLoadTrack( const Tomahawk::result_ptr& result, QSharedPointe bool err = false; { - if ( !( TomahawkUtils::isLocalResult( d->currentTrack->url() ) || TomahawkUtils::isHttpResult( d->currentTrack->url() ) ) + if ( !( TomahawkUtils::isLocalResult( d->currentTrack->url() ) || TomahawkUtils::isHttpResult( d->currentTrack->url() ) || TomahawkUtils::isRtmpResult( d->currentTrack->url() ) ) && ( !io || io.isNull() ) ) { tLog() << "Error getting iodevice for" << result->url(); @@ -668,7 +669,8 @@ AudioEngine::performLoadTrack( const Tomahawk::result_ptr& result, QSharedPointe d->state = Loading; emit loading( d->currentTrack ); - if ( !TomahawkUtils::isLocalResult( d->currentTrack->url() ) && !TomahawkUtils::isHttpResult( d->currentTrack->url() ) ) + if ( !TomahawkUtils::isLocalResult( d->currentTrack->url() ) && !TomahawkUtils::isHttpResult( d->currentTrack->url() ) + && !TomahawkUtils::isRtmpResult( d->currentTrack->url() ) ) { QSharedPointer qnr = io.objectCast(); if ( !qnr.isNull() ) diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 1e45ac54f..f202cedcb 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -554,6 +554,13 @@ isLocalResult( const QString& url ) } +bool +isRtmpResult( const QString& url ) +{ + return url.startsWith( "rtmp://" ); +} + + void crash() { diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h index 98fe786f7..c40f58bd4 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -172,6 +172,7 @@ namespace TomahawkUtils */ DLLEXPORT bool isHttpResult( const QString& url ); DLLEXPORT bool isLocalResult( const QString& url ); + DLLEXPORT bool isRtmpResult( const QString& url ); DLLEXPORT bool verifyFile( const QString& filePath, const QString& signature ); DLLEXPORT QString extractScriptPayload( const QString& filename, const QString& resolverId, const QString& dirName = "atticaresolvers" );