From 4993201b70f67b91967417bb3fe55579c415b6f5 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Tue, 30 Oct 2018 23:18:25 +0100 Subject: [PATCH] Fix deezer url handler --- src/deezer/deezerservice.cpp | 5 +++-- src/deezer/deezerservice.h | 2 +- src/deezer/deezerurlhandler.cpp | 11 +++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/deezer/deezerservice.cpp b/src/deezer/deezerservice.cpp index 477a82618..725eb35b0 100644 --- a/src/deezer/deezerservice.cpp +++ b/src/deezer/deezerservice.cpp @@ -768,14 +768,15 @@ Song DeezerService::ParseSong(const int album_id, const QString &album, const QS } -void DeezerService::GetStreamURL(const QUrl &original_url) { +bool DeezerService::GetStreamURL(const QUrl &original_url) { #ifdef HAVE_DZMEDIA stream_request_url_ = original_url; dzmedia_->GetStreamURL(original_url); + return true; #else stream_request_url_ = QUrl(); - emit StreamURLReceived(original_url, original_url, Song::FileType_Stream); + return false; #endif } diff --git a/src/deezer/deezerservice.h b/src/deezer/deezerservice.h index f23fde209..a184e0346 100644 --- a/src/deezer/deezerservice.h +++ b/src/deezer/deezerservice.h @@ -76,7 +76,7 @@ class DeezerService : public InternetService { const bool app_id() { return kAppID; } const bool authenticated() { return !access_token_.isEmpty(); } - void GetStreamURL(const QUrl &url); + bool GetStreamURL(const QUrl &url); signals: void Login(); diff --git a/src/deezer/deezerurlhandler.cpp b/src/deezer/deezerurlhandler.cpp index 5dd2d53e1..2e8afa9c0 100644 --- a/src/deezer/deezerurlhandler.cpp +++ b/src/deezer/deezerurlhandler.cpp @@ -43,8 +43,15 @@ UrlHandler::LoadResult DeezerUrlHandler::StartLoading(const QUrl &url) { if (task_id_ != -1) return ret; last_original_url_ = url; task_id_ = app_->task_manager()->StartTask(QString("Loading %1 stream...").arg(url.scheme())); - service_->GetStreamURL(url); - ret.type_ = LoadResult::WillLoadAsynchronously; + bool wait_for_url = service_->GetStreamURL(url); + if (wait_for_url) { + ret.type_ = LoadResult::WillLoadAsynchronously; + } + else { + CancelTask(); + ret.type_ = LoadResult::TrackAvailable; + ret.media_url_ = url; + } return ret; }