Improve resume playback on startup, re-request stream URL when unpausing

Fixes #270
This commit is contained in:
Jonas Kvinge
2021-06-10 23:13:03 +02:00
parent 9db59d5deb
commit 8fd32aba4f
9 changed files with 106 additions and 50 deletions

View File

@@ -766,7 +766,7 @@ MainWindow::MainWindow(Application *app, std::shared_ptr<SystemTrayIcon> tray_ic
#ifdef HAVE_GLOBALSHORTCUTS
// Global shortcuts
QObject::connect(globalshortcuts_manager_, &GlobalShortcutsManager::Play, app_->player(), &Player::Play);
QObject::connect(globalshortcuts_manager_, &GlobalShortcutsManager::Play, app_->player(), &Player::PlayHelper);
QObject::connect(globalshortcuts_manager_, &GlobalShortcutsManager::Pause, app_->player(), &Player::Pause);
QObject::connect(globalshortcuts_manager_, &GlobalShortcutsManager::PlayPause, ui_->action_play_pause, &QAction::trigger);
QObject::connect(globalshortcuts_manager_, &GlobalShortcutsManager::Stop, ui_->action_stop, &QAction::trigger);
@@ -1446,13 +1446,7 @@ void MainWindow::ResumePlayback() {
app_->player()->PlayPause();
});
}
// Seek after we got song length.
std::shared_ptr<QMetaObject::Connection> connection = std::make_shared<QMetaObject::Connection>();
*connection = QObject::connect(track_position_timer_, &QTimer::timeout, this, [this, connection, playback_position]() {
QObject::disconnect(*connection);
ResumePlaybackSeek(playback_position);
});
app_->player()->Play();
app_->player()->Play(playback_position * kNsecPerSec);
}
// Reset saved playback status so we don't resume again from the same position.
@@ -1464,14 +1458,6 @@ void MainWindow::ResumePlayback() {
}
void MainWindow::ResumePlaybackSeek(const int playback_position) {
if (app_->player()->engine()->length_nanosec() > 0) {
app_->player()->SeekTo(playback_position);
}
}
void MainWindow::PlayIndex(const QModelIndex &idx, Playlist::AutoScroll autoscroll) {
if (!idx.isValid()) return;