Fix resume playback on startup
This commit is contained in:
@@ -794,7 +794,9 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
|
||||
|
||||
CommandlineOptionsReceived(options);
|
||||
|
||||
if (!options.contains_play_options()) LoadPlaybackStatus();
|
||||
if (!options.contains_play_options()) {
|
||||
LoadPlaybackStatus();
|
||||
}
|
||||
|
||||
RefreshStyleSheet();
|
||||
|
||||
@@ -1027,49 +1029,45 @@ void MainWindow::SaveGeometry() {
|
||||
|
||||
void MainWindow::SavePlaybackStatus() {
|
||||
|
||||
QSettings settings;
|
||||
QSettings s;
|
||||
|
||||
settings.beginGroup("Player");
|
||||
settings.setValue("playback_state", app_->player()->GetState());
|
||||
s.beginGroup(Player::kSettingsGroup);
|
||||
s.setValue("playback_state", app_->player()->GetState());
|
||||
if (app_->player()->GetState() == Engine::Playing || app_->player()->GetState() == Engine::Paused) {
|
||||
settings.setValue("playback_position", app_->player()->engine()->position_nanosec() / kNsecPerSec);
|
||||
s.setValue("playback_position", app_->player()->engine()->position_nanosec() / kNsecPerSec);
|
||||
}
|
||||
else {
|
||||
settings.setValue("playback_position", 0);
|
||||
s.setValue("playback_position", 0);
|
||||
}
|
||||
|
||||
settings.endGroup();
|
||||
s.endGroup();
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::LoadPlaybackStatus() {
|
||||
|
||||
QSettings settings;
|
||||
QSettings s;
|
||||
|
||||
settings.beginGroup(BehaviourSettingsPage::kSettingsGroup);
|
||||
bool resume_playback = settings.value("resumeplayback", false).toBool();
|
||||
settings.endGroup();
|
||||
s.beginGroup(BehaviourSettingsPage::kSettingsGroup);
|
||||
bool resume_playback = s.value("resumeplayback", false).toBool();
|
||||
s.endGroup();
|
||||
|
||||
if (!resume_playback) return;
|
||||
s.beginGroup(Player::kSettingsGroup);
|
||||
saved_playback_state_ = static_cast<Engine::State> (s.value("playback_state", Engine::Empty).toInt());
|
||||
saved_playback_position_ = s.value("playback_position", 0).toDouble();
|
||||
s.endGroup();
|
||||
|
||||
settings.beginGroup("Player");
|
||||
saved_playback_state_ = static_cast<Engine::State> (settings.value("playback_state", Engine::Empty).toInt());
|
||||
saved_playback_position_ = settings.value("playback_position", 0).toDouble();
|
||||
settings.endGroup();
|
||||
|
||||
if (saved_playback_state_ == Engine::Empty || saved_playback_state_ == Engine::Idle) {
|
||||
return;
|
||||
if (resume_playback && saved_playback_state_ != Engine::Empty && saved_playback_state_ != Engine::Idle) {
|
||||
connect(app_->playlist_manager(), SIGNAL(AllPlaylistsLoaded()), SLOT(ResumePlayback()));
|
||||
}
|
||||
|
||||
connect(app_->playlist_manager()->active(), SIGNAL(RestoreFinished()), SLOT(ResumePlayback()));
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::ResumePlayback() {
|
||||
|
||||
qLog(Debug) << "Resuming playback";
|
||||
|
||||
disconnect(app_->playlist_manager()->active(), SIGNAL(RestoreFinished()), this, SLOT(ResumePlayback()));
|
||||
disconnect(app_->playlist_manager(), SIGNAL(AllPlaylistsLoaded()), this, SLOT(ResumePlayback()));
|
||||
|
||||
if (saved_playback_state_ == Engine::Paused) {
|
||||
NewClosure(app_->player(), SIGNAL(Playing()), app_->player(), SLOT(PlayPause()));
|
||||
|
||||
Reference in New Issue
Block a user