From fab1d94d342f6e33c781de031506892b5a7bb4a0 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Wed, 14 Jul 2021 13:02:54 +0200 Subject: [PATCH] Delay resume playback on startup to make sure Tidal login is refreshed --- src/core/mainwindow.cpp | 4 +++- src/tidal/tidalservice.cpp | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 387b78ff..e5febbd3 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -1431,7 +1431,9 @@ void MainWindow::LoadPlaybackStatus() { s.endGroup(); if (resume_playback && playback_state != Engine::Empty && playback_state != Engine::Idle) { - QObject::connect(app_->playlist_manager(), &PlaylistManager::AllPlaylistsLoaded, this, &MainWindow::ResumePlayback); + QObject::connect(app_->playlist_manager(), &PlaylistManager::AllPlaylistsLoaded, this, [this]() { + QTimer::singleShot(400, this, &MainWindow::ResumePlayback); + }); } } diff --git a/src/tidal/tidalservice.cpp b/src/tidal/tidalservice.cpp index d0b29aa3..5212cea0 100644 --- a/src/tidal/tidalservice.cpp +++ b/src/tidal/tidalservice.cpp @@ -20,6 +20,7 @@ #include "config.h" #include +#include #include #include @@ -80,6 +81,8 @@ const char *TidalService::kArtistsSongsFtsTable = "tidal_artists_songs_fts"; const char *TidalService::kAlbumsSongsFtsTable = "tidal_albums_songs_fts"; const char *TidalService::kSongsFtsTable = "tidal_songs_fts"; +using namespace std::chrono_literals; + TidalService::TidalService(Application *app, QObject *parent) : InternetService(Song::Source_Tidal, "Tidal", "tidal", TidalSettingsPage::kSettingsGroup, SettingsDialog::Page_Tidal, app, parent), app_(app), @@ -258,8 +261,12 @@ void TidalService::LoadSession() { if (!refresh_token_.isEmpty()) { qint64 time = expires_in_ - (QDateTime::currentDateTime().toSecsSinceEpoch() - login_time_); - if (time < 6) time = 6; - timer_refresh_login_->setInterval(static_cast(time * kMsecPerSec)); + if (time <= 0) { + timer_refresh_login_->setInterval(200ms); + } + else { + timer_refresh_login_->setInterval(static_cast(time * kMsecPerSec)); + } timer_refresh_login_->start(); }