From 4e76cf9fc5605a24b14385ddcd47f5db0651626c Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Wed, 10 Apr 2019 17:42:51 -0400 Subject: [PATCH] Move any code with youtube-dl access(which can be slow) to another thread. Fixes #2. --- CMakeLists.txt | 1 + plasmoid/package/contents/ui/main.qml | 1 + src/minimediaplayer.cpp | 42 +++++++++++++++------------ src/minimediaplayer.h | 2 +- src/simplecastservice.cpp | 3 +- src/simplecasttcpservice.cpp | 3 +- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48c9e63..696f9fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ project(simplecastengine) set(QT_MIN_VERSION "5.9.0") set(KF_MIN_VERSION "5.35.0") +set (CMAKE_CXX_STANDARD 11) find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index 32d1400..80d57fc 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -95,6 +95,7 @@ Item { var loadTrack = service.operationDescription("addURLToPlaylist"); loadTrack.URL = url.text; service.startOperationCall(loadTrack); + url.text = ""; } } } diff --git a/src/minimediaplayer.cpp b/src/minimediaplayer.cpp index 111ba39..75750dd 100644 --- a/src/minimediaplayer.cpp +++ b/src/minimediaplayer.cpp @@ -19,6 +19,7 @@ #include #include #include +#include MiniMediaPlayer::MiniMediaPlayer(QObject *parent) : QObject(parent) { @@ -40,9 +41,12 @@ bool MiniMediaPlayer::nextTrack() if(playlist.size() > 1) { playlist.pop_front(); - m_player->stop(); - m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); - emit playlistChanged(getTrackNames()); + m_player->pause(); + m_player->setPosition(0); + QtConcurrent::run([this]() { + m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); + emit playlistChanged(getTrackNames()); + }); return true; } else if(playlist.size() == 1) @@ -98,25 +102,25 @@ void MiniMediaPlayer::positionChanged(qint64 position) emit trackPositionChanged(position); } -bool MiniMediaPlayer::addURLToPlaylist(QUrl mediaUrl) +void MiniMediaPlayer::addURLToPlaylist(QUrl mediaUrl) { - if(isValidMediaUrl(mediaUrl)) - { - bool shouldStartPlaying = false; - if(playlist.size() == 0) shouldStartPlaying = true; - QList> tracks = getStreamTitlesAndUrlsFromUrl(mediaUrl); - playlist.append(tracks); - emit playlistChanged(getTrackNames()); - if(shouldStartPlaying && playlist.size() > 0) + QtConcurrent::run([this,mediaUrl](){ + if(isValidMediaUrl(mediaUrl)) { - m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); - } - if(tracks.size() > 0) - { - return true; + bool shouldStartPlaying = false; + if(playlist.size() == 0) shouldStartPlaying = true; + QList> tracks = getStreamTitlesAndUrlsFromUrl(mediaUrl); + if(tracks.size() > 0) + { + playlist.append(tracks); + emit playlistChanged(getTrackNames()); + } + if(shouldStartPlaying && playlist.size() > 0) + { + m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); + } } - } - return false; + }); } QUrl MiniMediaPlayer::getStreamUrlFromUrl(QUrl mediaUrl) diff --git a/src/minimediaplayer.h b/src/minimediaplayer.h index 6c5b1b5..5ca3609 100644 --- a/src/minimediaplayer.h +++ b/src/minimediaplayer.h @@ -31,7 +31,7 @@ class MiniMediaPlayer : public QObject public: MiniMediaPlayer(QObject *parent = 0); - bool addURLToPlaylist(QUrl mediaUrl); + void addURLToPlaylist(QUrl mediaUrl); QList getTrackNames(); diff --git a/src/simplecastservice.cpp b/src/simplecastservice.cpp index 1abfefd..82a0a72 100644 --- a/src/simplecastservice.cpp +++ b/src/simplecastservice.cpp @@ -43,7 +43,8 @@ public: { if(paramaters.contains("URL")) { - setResult(player->addURLToPlaylist(paramaters["URL"].toUrl())); + player->addURLToPlaylist(paramaters["URL"].toUrl()); + emitResult(); } } } diff --git a/src/simplecasttcpservice.cpp b/src/simplecasttcpservice.cpp index 7cf949c..6ddeedc 100644 --- a/src/simplecasttcpservice.cpp +++ b/src/simplecasttcpservice.cpp @@ -57,7 +57,8 @@ public: } else if(message.size() == 3 && message[1] == "addURLToPlaylist") { - openSocket.write(player->addURLToPlaylist(QUrl(message[2]))?"0":"1"); + player->addURLToPlaylist(QUrl(message[2])); + openSocket.write("0"); } else { -- GitLab